From 02f3765351c9e25185b745b84f1a2604fb2149c7 Mon Sep 17 00:00:00 2001 From: mifi Date: Tue, 18 Dec 2007 21:20:28 +0000 Subject: - added patch for new flash functionality like: flash verify_image and flash erase_address. - added patch for new parport_write_on_exit command. Even this patch will fix some memory leaks. (thanks too oyvind and Spen for these patches) git-svn-id: svn://svn.berlios.de/openocd/trunk@240 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- src/server/gdb_server.c | 7 ++++++- src/server/server.c | 3 +++ src/server/telnet_server.c | 11 +++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) (limited to 'src/server') diff --git a/src/server/gdb_server.c b/src/server/gdb_server.c index 657338ea..cd7e327f 100644 --- a/src/server/gdb_server.c +++ b/src/server/gdb_server.c @@ -447,9 +447,14 @@ int gdb_connection_closed(connection_t *connection) delete_debug_msg_receiver(connection->cmd_ctx, gdb_service->target); if (connection->priv) + { free(connection->priv); + connection->priv = NULL; + } else + { ERROR("BUG: connection->priv == NULL"); + } target_unregister_event_callback(gdb_target_callback_event_handler, connection); @@ -1325,7 +1330,7 @@ int gdb_v_packet(connection_t *connection, target_t *target, char *packet, int p char *error_str; /* process the flashing buffer */ - if ((result = flash_write(gdb_service->target, gdb_connection->vflash_image, &written, &error_str, NULL, 0)) != ERROR_OK) + if ((result = flash_image_operation(gdb_service->target, gdb_connection->vflash_image, &written, &error_str, NULL, flash_image_op_write)) != ERROR_OK) { if (result == ERROR_FLASH_DST_OUT_OF_BANK) gdb_put_packet(connection, "E.memtype", 9); diff --git a/src/server/server.c b/src/server/server.c index 98b1fb1d..82f9f448 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -230,6 +230,8 @@ int remove_services() c = next; } + services = NULL; + return ERROR_OK; } @@ -454,3 +456,4 @@ int handle_shutdown_command(struct command_context_s *cmd_ctx, char *cmd, char * return ERROR_COMMAND_CLOSE_CONNECTION; } + diff --git a/src/server/telnet_server.c b/src/server/telnet_server.c index eeb2cc82..5353369a 100644 --- a/src/server/telnet_server.c +++ b/src/server/telnet_server.c @@ -506,21 +506,32 @@ int telnet_connection_closed(connection_t *connection) int i; if (t_con->prompt) + { free(t_con->prompt); + t_con->prompt = NULL; + } for (i = 0; i < TELNET_LINE_HISTORY_SIZE; i++) { if (t_con->history[i]) + { free(t_con->history[i]); + t_con->history[i] = NULL; + } } /* if this connection registered a debug-message receiver delete it */ delete_debug_msg_receiver(connection->cmd_ctx, NULL); if (connection->priv) + { free(connection->priv); + connection->priv = NULL; + } else + { ERROR("BUG: connection->priv == NULL"); + } target_unregister_event_callback(telnet_target_callback_event_handler, connection->cmd_ctx); -- cgit v1.2.3