From 4dab4dd48d4b53b1dfeff3d9be388c64ba68e068 Mon Sep 17 00:00:00 2001 From: sgranjoux Date: Sat, 20 Oct 2007 10:14:17 +0000 Subject: [PATCH] * plugins/debug-manager/queue.c: Fix #488061: Mutiple crash dialogs * plugins/gdb/debugger.c, plugins/gdb/debugger.h: Remove maximum gdb command length, should fix bug#474811 git-svn-id: http://svn.gnome.org/svn/anjuta/trunk@3234 1dbfb86a-d425-0410-a06b-cb591aac69f6 --- ChangeLog | 9 +++++++++ plugins/debug-manager/queue.c | 2 ++ plugins/gdb/debugger.c | 24 ++++++++++++------------ plugins/gdb/debugger.h | 4 +--- 4 files changed, 24 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index b1ccd5b4..f81da4d9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2007-10-20 Sébastien Granjoux + + * plugins/debug-manager/queue.c: + Fix #488061: Mutiple crash dialogs + + * plugins/gdb/debugger.c, + plugins/gdb/debugger.h: + Remove maximum gdb command length, should fix bug#474811 + 2007-10-19 Sébastien Granjoux * manuals/reference/libanjuta/plugin-description-file.sgml, diff --git a/plugins/debug-manager/queue.c b/plugins/debug-manager/queue.c index 36c48673..03aad9a0 100644 --- a/plugins/debug-manager/queue.c +++ b/plugins/debug-manager/queue.c @@ -641,6 +641,8 @@ dma_debugger_queue_stop (DmaDebuggerQueue *self) g_signal_handlers_disconnect_by_func (self->debugger, G_CALLBACK (on_dma_program_stopped), self); g_signal_handlers_disconnect_by_func (self->debugger, G_CALLBACK (on_dma_program_exited), self); g_signal_handlers_disconnect_by_func (self->debugger, G_CALLBACK (on_dma_program_moved), self); + g_signal_handlers_disconnect_by_func (self->debugger, G_CALLBACK (on_dma_signal_received), self); + g_signal_handlers_disconnect_by_func (self->debugger, G_CALLBACK (on_dma_frame_changed), self); g_signal_handlers_disconnect_by_func (self->debugger, G_CALLBACK (on_dma_sharedlib_event), self); self->debugger = NULL; } diff --git a/plugins/gdb/debugger.c b/plugins/gdb/debugger.c index c8092046..6cf0516b 100644 --- a/plugins/gdb/debugger.c +++ b/plugins/gdb/debugger.c @@ -232,7 +232,7 @@ debugger_initialize (Debugger *debugger) debugger->priv->skip_next_prompt = FALSE; debugger->priv->command_output_sent = FALSE; - strcpy (debugger->priv->current_cmd.cmd, ""); + debugger->priv->current_cmd.cmd = NULL; debugger->priv->current_cmd.parser = NULL; debugger->priv->cmd_queqe = NULL; @@ -524,7 +524,7 @@ debugger_queue_set_next_command (Debugger *debugger) dc = debugger_queue_get_next_command (debugger); if (!dc) { - strcpy (debugger->priv->current_cmd.cmd, ""); + debugger->priv->current_cmd.cmd = NULL; debugger->priv->current_cmd.parser = NULL; debugger->priv->current_cmd.callback = NULL; debugger->priv->current_cmd.user_data = NULL; @@ -533,10 +533,8 @@ debugger_queue_set_next_command (Debugger *debugger) return FALSE; } - else - { - } - strcpy (debugger->priv->current_cmd.cmd, dc->cmd); + g_free (debugger->priv->current_cmd.cmd); + debugger->priv->current_cmd.cmd = dc->cmd; debugger->priv->current_cmd.parser = dc->parser; debugger->priv->current_cmd.callback = dc->callback; debugger->priv->current_cmd.user_data = dc->user_data; @@ -561,7 +559,7 @@ debugger_queue_command (Debugger *debugger, const gchar *cmd, dc = g_malloc (sizeof (DebuggerCommand)); if (dc) { - strcpy (dc->cmd, cmd); + dc->cmd = g_strdup(cmd); dc->parser = parser; dc->callback = callback; dc->user_data = user_data; @@ -582,12 +580,14 @@ debugger_queue_clear (Debugger *debugger) node = debugger->priv->cmd_queqe; while (node) { + g_free (((DebuggerCommand *)node->data)->cmd); g_free (node->data); node = g_list_next (node); } g_list_free (debugger->priv->cmd_queqe); debugger->priv->cmd_queqe = NULL; - strcpy (debugger->priv->current_cmd.cmd, ""); + g_free (debugger->priv->current_cmd.cmd); + debugger->priv->current_cmd.cmd = NULL; debugger->priv->current_cmd.parser = NULL; debugger->priv->current_cmd.callback = NULL; debugger->priv->current_cmd.user_data = NULL; @@ -1245,8 +1245,8 @@ debugger_parse_stopped (Debugger *debugger) } debugger->priv->cli_lines = g_list_reverse (debugger->priv->cli_lines); - if (debugger->priv->current_cmd.cmd[0] != '\0' && - debugger->priv->current_cmd.parser != NULL) + if ((debugger->priv->current_cmd.cmd != NULL) && + (debugger->priv->current_cmd.parser != NULL)) { debugger->priv->current_cmd.parser (debugger, val, debugger->priv->cli_lines, FALSE); @@ -1424,8 +1424,8 @@ debugger_stdo_flush (Debugger *debugger) GDBMIValue *val = gdbmi_value_parse (line); debugger->priv->cli_lines = g_list_reverse (debugger->priv->cli_lines); - if (debugger->priv->current_cmd.cmd[0] != '\0' && - debugger->priv->current_cmd.parser != NULL) + if ((debugger->priv->current_cmd.cmd != NULL) && + (debugger->priv->current_cmd.parser != NULL)) { debugger->priv->current_cmd.parser (debugger, val, debugger->priv->cli_lines, FALSE); diff --git a/plugins/gdb/debugger.h b/plugins/gdb/debugger.h index 97e0f6c2..f7c91d25 100644 --- a/plugins/gdb/debugger.h +++ b/plugins/gdb/debugger.h @@ -32,8 +32,6 @@ G_BEGIN_DECLS -#define DEBUGGER_COMMAND_MAX_LENGTH 1024 - typedef struct _Debugger Debugger; typedef struct _DebuggerClass DebuggerClass; typedef struct _DebuggerPriv DebuggerPriv; @@ -57,7 +55,7 @@ typedef void (*DebuggerParserFunc) (Debugger *debugger, struct _DebuggerCommand { - gchar cmd[DEBUGGER_COMMAND_MAX_LENGTH]; + gchar *cmd; gboolean suppress_error; gboolean keep_result; DebuggerParserFunc parser; -- 2.11.4.GIT