]> git.sur5r.net Git - openocd/commitdiff
Fix NPE in GDB_EVENT_END as logforwarding was not disabled early enough
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Mon, 27 Jul 2009 18:56:43 +0000 (18:56 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Mon, 27 Jul 2009 18:56:43 +0000 (18:56 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@2570 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/server/gdb_server.c

index 9151caa8509973ce4569d42deb6ada424e126c6d..48144f2665a3048b6d81398c8cbc9d21df8615af 100644 (file)
@@ -816,6 +816,11 @@ int gdb_connection_closed(connection_t *connection)
        gdb_service_t *gdb_service = connection->service->priv;
        gdb_connection_t *gdb_connection = connection->priv;
 
+       /* we're done forwarding messages. Tear down callback before
+        * cleaning up connection.
+        */
+       log_remove_callback(gdb_log_callback, connection);
+
        gdb_actual_connections--;
        LOG_DEBUG("GDB Close, Target: %s, state: %s, gdb_actual_connections=%d", 
                  gdb_service->target->cmd_name,
@@ -843,9 +848,10 @@ int gdb_connection_closed(connection_t *connection)
                LOG_ERROR("BUG: connection->priv == NULL");
        }
 
+
        target_unregister_event_callback(gdb_target_callback_event_handler, connection);
+
        target_call_event_callbacks(gdb_service->target, TARGET_EVENT_GDB_END);
-       log_remove_callback(gdb_log_callback, connection);
 
        target_call_event_callbacks(gdb_service->target, TARGET_EVENT_GDB_DETACH);