← Back to team overview

ayatana-commits team mailing list archive

[Merge] lp:~ted/libindicate/tuples-sucks into lp:libindicate

 

Ted Gould has proposed merging lp:~ted/libindicate/tuples-sucks into lp:libindicate.

Requested reviews:
  Indicator Applet Developers (indicator-applet-developers)

For more details, see:
https://code.launchpad.net/~ted/libindicate/tuples-sucks/+merge/46361

Fixing more crashers in libindicate
-- 
https://code.launchpad.net/~ted/libindicate/tuples-sucks/+merge/46361
Your team ayatana-commits is subscribed to branch lp:libindicate.
=== modified file 'libindicate/server.c'
--- libindicate/server.c	2011-01-13 22:49:19 +0000
+++ libindicate/server.c	2011-01-14 23:14:53 +0000
@@ -1733,15 +1733,20 @@
 			g_dbus_method_invocation_return_gerror(invocation, error);
 			g_error_free(error);
 		} else {
-			GVariantBuilder builder;
-			g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY);
-
-			int i;
-			for (i = 0; array != NULL && i < array->len; i++) {
-				g_variant_builder_add_value(&builder, g_variant_new_int32(g_array_index(array, gint, i)));
+			GVariant * retval = NULL;
+			if (array->len != 0) {
+				GVariantBuilder builder;
+				g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY);
+
+				int i;
+				for (i = 0; array != NULL && i < array->len; i++) {
+					g_variant_builder_add_value(&builder, g_variant_new_int32(g_array_index(array, gint, i)));
+				}
+
+				retval = g_variant_builder_end(&builder);
+			} else {
+				retval = g_variant_parse(g_variant_type_new("ai"), "[]", NULL, NULL, NULL);
 			}
-
-			GVariant * retval = g_variant_builder_end(&builder);
 			g_dbus_method_invocation_return_value(invocation, g_variant_new_tuple(&retval, 1));
 
 			g_array_free(array, TRUE);
@@ -1808,7 +1813,10 @@
 			g_dbus_method_invocation_return_gerror(invocation, error);
 			g_error_free(error);
 		} else {
-			g_dbus_method_invocation_return_value(invocation, g_variant_new_tuple(&output, 1));
+			if (output != NULL) {
+				output = g_variant_new_tuple(&output, 1);
+			}
+			g_dbus_method_invocation_return_value(invocation, output);
 		}
 
 		return;
@@ -1839,7 +1847,10 @@
 			g_error_free(error);
 		} else {
 			GVariant * retvals = g_variant_new_strv((const gchar * const *)props, -1);
-			g_dbus_method_invocation_return_value(invocation, g_variant_new_tuple(&retvals, 1));
+			if (retvals != NULL) {
+				retvals = g_variant_new_tuple(&retvals, 1);
+			}
+			g_dbus_method_invocation_return_value(invocation, retvals);
 			g_strfreev(props);
 		}
 


Follow ups