[geany/geany-plugins] ecb4ba: debugger: Don't work on NULL GString or GHashTable

Colomban Wendling git-noreply at xxxxx
Sun Nov 15 17:28:17 UTC 2015


Branch:      refs/heads/master
Author:      Colomban Wendling <ban at herbesfolles.org>
Committer:   Colomban Wendling <ban at herbesfolles.org>
Date:        Sat, 25 Oct 2014 13:05:38 UTC
Commit:      ecb4ba7aadf0cc1920d2ac7323e435fb22201e1e
             https://github.com/geany/geany-plugins/commit/ecb4ba7aadf0cc1920d2ac7323e435fb22201e1e

Log Message:
-----------
debugger: Don't work on NULL GString or GHashTable


Modified Paths:
--------------
    debugger/src/dbm_gdb.c
    debugger/src/debug.c

Modified: debugger/src/dbm_gdb.c
6 lines changed, 4 insertions(+), 2 deletions(-)
===================================================================
@@ -259,9 +259,11 @@ static void gdb_input_write_line(const gchar *line)
  */
 static void free_queue_item(queue_item *item)
 {
-	g_string_free(item->message, TRUE);
+	if (item->message)
+		g_string_free(item->message, TRUE);
 	g_string_free(item->command, TRUE);
-	g_string_free(item->error_message, TRUE);
+	if (item->error_message)
+		g_string_free(item->error_message, TRUE);
 	g_free(item);
 }
 


Modified: debugger/src/debug.c
46 lines changed, 25 insertions(+), 21 deletions(-)
===================================================================
@@ -662,7 +662,8 @@ static void on_debugger_stopped (int thread_id)
 	}
 
 	/* clear calltips cache */
-	g_hash_table_remove_all(calltips);
+	if (calltips)
+		g_hash_table_remove_all(calltips);
 
 	/* if a stop was requested for asyncronous exiting -
 	 * stop debug module and exit */
@@ -927,7 +928,8 @@ static void on_select_frame(int frame_number)
 	active_module->set_active_frame(frame_number);
 	
 	/* clear calltips cache */
-	g_hash_table_remove_all(calltips);
+	if (calltips)
+		g_hash_table_remove_all(calltips);
 	
 	/* autos */
 	autos = active_module->get_autos();
@@ -1326,33 +1328,35 @@ gchar* debug_get_calltip_for_expression(gchar* expression)
 		if (var)
 		{
 			calltip_str = get_calltip_line(var, TRUE);
-			if (var->has_children)
+			if (calltip_str)
 			{
-				int lines_left = MAX_CALLTIP_HEIGHT - 1;
-				GList* children = active_module->get_children(var->internal->str); 
-				GList* child = children;
-				while(child && lines_left)
+				if (var->has_children)
 				{
-					variable *varchild = (variable*)child->data;
-					GString *child_string = get_calltip_line(varchild, FALSE);
-					g_string_append_printf(calltip_str, "\n%s", child_string->str);
-					g_string_free(child_string, TRUE);
+					int lines_left = MAX_CALLTIP_HEIGHT - 1;
+					GList* children = active_module->get_children(var->internal->str);
+					GList* child = children;
+					while(child && lines_left)
+					{
+						variable *varchild = (variable*)child->data;
+						GString *child_string = get_calltip_line(varchild, FALSE);
+						g_string_append_printf(calltip_str, "\n%s", child_string->str);
+						g_string_free(child_string, TRUE);
 
-					child = child->next;
-					lines_left--;
-				}
-				if (!lines_left && child)
-				{
-					g_string_append(calltip_str, "\n\t\t........");
+						child = child->next;
+						lines_left--;
+					}
+					if (!lines_left && child)
+					{
+						g_string_append(calltip_str, "\n\t\t........");
+					}
+					g_list_foreach(children, (GFunc)variable_free, NULL);
+					g_list_free(children);
 				}
-				g_list_foreach(children, (GFunc)variable_free, NULL);
-				g_list_free(children);
+				calltip = g_string_free(calltip_str, FALSE);
 			}
 
 			active_module->remove_watch(var->internal->str);
 
-			calltip = g_string_free(calltip_str, FALSE);
-
 			if (!calltips)
 			{
 				calltips = g_hash_table_new_full(g_str_hash, g_str_equal, (GDestroyNotify)g_free, (GDestroyNotify)g_free);



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Plugins-Commits mailing list