[geany/geany-plugins] f9149c: debugger/gdb_mi: Slightly reduce memory usage

Colomban Wendling git-noreply at xxxxx
Sun Feb 7 15:47:21 UTC 2016


Branch:      refs/heads/master
Author:      Colomban Wendling <ban at herbesfolles.org>
Committer:   Colomban Wendling <ban at herbesfolles.org>
Date:        Sun, 07 Feb 2016 15:47:21 UTC
Commit:      f9149ccd4ad1fb0271d3d4de9fd985a8f801b7a4
             https://github.com/geany/geany-plugins/commit/f9149ccd4ad1fb0271d3d4de9fd985a8f801b7a4

Log Message:
-----------
debugger/gdb_mi: Slightly reduce memory usage


Modified Paths:
--------------
    debugger/src/dbm_gdb.c
    debugger/src/gdb_mi.c
    debugger/src/gdb_mi.h

Modified: debugger/src/dbm_gdb.c
28 lines changed, 14 insertions(+), 14 deletions(-)
===================================================================
@@ -927,8 +927,8 @@ static int get_break_number(char* file, int line)
 	body = gdb_mi_result_var(table, "body", GDB_MI_VAL_LIST);
 	gdb_mi_result_foreach_matched (bkpt, body, "bkpt", GDB_MI_VAL_LIST)
 	{
-		const gchar *number = gdb_mi_result_var(bkpt->val->list, "number", GDB_MI_VAL_STRING);
-		const gchar *location = gdb_mi_result_var(bkpt->val->list, "original-location", GDB_MI_VAL_STRING);
+		const gchar *number = gdb_mi_result_var(bkpt->val->v.list, "number", GDB_MI_VAL_STRING);
+		const gchar *location = gdb_mi_result_var(bkpt->val->v.list, "original-location", GDB_MI_VAL_STRING);
 		const gchar *colon;
 		gboolean break_found = FALSE;
 
@@ -1091,9 +1091,9 @@ static GList* get_stack(void)
 	stack_node = gdb_mi_result_var(record->first, "stack", GDB_MI_VAL_LIST);
 	gdb_mi_result_foreach_matched (frame_node, stack_node, "frame", GDB_MI_VAL_LIST)
 	{
-		const gchar *addr = gdb_mi_result_var(frame_node->val->list, "addr", GDB_MI_VAL_STRING);
-		const gchar *func = gdb_mi_result_var(frame_node->val->list, "func", GDB_MI_VAL_STRING);
-		const gchar *line = gdb_mi_result_var(frame_node->val->list, "line", GDB_MI_VAL_STRING);
+		const gchar *addr = gdb_mi_result_var(frame_node->val->v.list, "addr", GDB_MI_VAL_STRING);
+		const gchar *func = gdb_mi_result_var(frame_node->val->v.list, "func", GDB_MI_VAL_STRING);
+		const gchar *line = gdb_mi_result_var(frame_node->val->v.list, "line", GDB_MI_VAL_STRING);
 		const gchar *file, *fullname;
 		frame *f = frame_new();
 
@@ -1101,9 +1101,9 @@ static GList* get_stack(void)
 		f->function = g_strdup(func);
 
 		/* file: fullname | file | from */
-		if ((fullname = file = gdb_mi_result_var(frame_node->val->list, "fullname", GDB_MI_VAL_STRING)) ||
-			(file = gdb_mi_result_var(frame_node->val->list, "file", GDB_MI_VAL_STRING)) ||
-			(file = gdb_mi_result_var(frame_node->val->list, "from", GDB_MI_VAL_STRING)))
+		if ((fullname = file = gdb_mi_result_var(frame_node->val->v.list, "fullname", GDB_MI_VAL_STRING)) ||
+			(file = gdb_mi_result_var(frame_node->val->v.list, "file", GDB_MI_VAL_STRING)) ||
+			(file = gdb_mi_result_var(frame_node->val->v.list, "from", GDB_MI_VAL_STRING)))
 		{
 			f->file = g_strdup(file);
 		}
@@ -1213,7 +1213,7 @@ static void update_files(void)
 	files_node = gdb_mi_result_var(record->first, "files", GDB_MI_VAL_LIST);
 	gdb_mi_result_foreach_matched (files_node, files_node, NULL, GDB_MI_VAL_LIST)
 	{
-		const gchar *fullname = gdb_mi_result_var(files_node->val->list, "fullname", GDB_MI_VAL_STRING);
+		const gchar *fullname = gdb_mi_result_var(files_node->val->v.list, "fullname", GDB_MI_VAL_STRING);
 
 		if (fullname && !g_hash_table_lookup(ht, fullname))
 		{
@@ -1325,11 +1325,11 @@ static void update_autos(void)
 
 		gdb_mi_result_foreach_matched (stack_args, stack_args, "frame", GDB_MI_VAL_LIST)
 		{
-			const struct gdb_mi_result *args = gdb_mi_result_var(stack_args->val->list, "args", GDB_MI_VAL_LIST);
+			const struct gdb_mi_result *args = gdb_mi_result_var(stack_args->val->v.list, "args", GDB_MI_VAL_LIST);
 
 			gdb_mi_result_foreach_matched (args, args, "name", GDB_MI_VAL_STRING)
 			{
-				variable *var = variable_new(args->val->string, VT_ARGUMENT);
+				variable *var = variable_new(args->val->v.string, VT_ARGUMENT);
 				vars = g_list_append(vars, var);
 			}
 		}
@@ -1342,7 +1342,7 @@ static void update_autos(void)
 
 		gdb_mi_result_foreach_matched (locals, locals, "name", GDB_MI_VAL_STRING)
 		{
-			variable *var = variable_new(locals->val->string, VT_LOCAL);
+			variable *var = variable_new(locals->val->v.string, VT_LOCAL);
 			vars = g_list_append(vars, var);
 		}
 	}
@@ -1445,8 +1445,8 @@ static GList* get_children (gchar* path)
 
 		gdb_mi_result_foreach_matched (child_node, child_node, "child", GDB_MI_VAL_LIST)
 		{
-			const gchar *internal = gdb_mi_result_var(child_node->val->list, "name", GDB_MI_VAL_STRING);
-			const gchar *name = gdb_mi_result_var(child_node->val->list, "exp", GDB_MI_VAL_STRING);
+			const gchar *internal = gdb_mi_result_var(child_node->val->v.list, "name", GDB_MI_VAL_STRING);
+			const gchar *name = gdb_mi_result_var(child_node->val->v.list, "exp", GDB_MI_VAL_STRING);
 			variable *var;
 
 			if (! name || ! internal)


Modified: debugger/src/gdb_mi.c
20 lines changed, 9 insertions(+), 11 deletions(-)
===================================================================
@@ -47,13 +47,11 @@ void gdb_mi_value_free(struct gdb_mi_value *val)
 	switch (val->type)
 	{
 		case GDB_MI_VAL_STRING:
-			g_free(val->string);
-			g_warn_if_fail(val->list == NULL);
+			g_free(val->v.string);
 			break;
 
 		case GDB_MI_VAL_LIST:
-			gdb_mi_result_free(val->list, TRUE);
-			g_warn_if_fail(val->string == NULL);
+			gdb_mi_result_free(val->v.list, TRUE);
 			break;
 	}
 	g_free(val);
@@ -216,7 +214,7 @@ static struct gdb_mi_value *parse_value(const gchar **p)
 	{
 		val = g_malloc0(sizeof *val);
 		val->type = GDB_MI_VAL_STRING;
-		val->string = parse_cstring(p);
+		val->v.string = parse_cstring(p);
 	}
 	else if (**p == '{' || **p == '[')
 	{
@@ -235,7 +233,7 @@ static struct gdb_mi_value *parse_value(const gchar **p)
 				if (prev)
 					prev->next = item;
 				else
-					val->list = item;
+					val->v.list = item;
 				prev = item;
 			}
 			else
@@ -396,9 +394,9 @@ const void *gdb_mi_result_var(const struct gdb_mi_result *result, const gchar *n
 	if (! val || val->type != type)
 		return NULL;
 	else if (val->type == GDB_MI_VAL_STRING)
-		return val->string;
+		return val->v.string;
 	else if (val->type == GDB_MI_VAL_LIST)
-		return val->list;
+		return val->v.list;
 	return NULL;
 }
 
@@ -452,12 +450,12 @@ static void gdb_mi_value_dump(const struct gdb_mi_value *v, gint indent)
 	switch (v->type)
 	{
 		case GDB_MI_VAL_STRING:
-			fprintf(stderr, "%*sstring = %s\n", indent * 2, "", v->string);
+			fprintf(stderr, "%*sstring = %s\n", indent * 2, "", v->v.string);
 			break;
 		case GDB_MI_VAL_LIST:
 			fprintf(stderr, "%*slist =>\n", indent * 2, "");
-			if (v->list)
-				gdb_mi_result_dump(v->list, TRUE, indent + 1);
+			if (v->v.list)
+				gdb_mi_result_dump(v->v.list, TRUE, indent + 1);
 			break;
 	}
 }


Modified: debugger/src/gdb_mi.h
6 lines changed, 4 insertions(+), 2 deletions(-)
===================================================================
@@ -34,8 +34,10 @@ struct gdb_mi_result;
 struct gdb_mi_value
 {
 	enum gdb_mi_value_type type;
-	gchar *string;
-	struct gdb_mi_result *list;
+	union {
+		gchar *string;
+		struct gdb_mi_result *list;
+	} v;
 };
 
 struct gdb_mi_result



--------------
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