glib-compile-schemas: write strinfo little endian
authorRyan Lortie <desrt@desrt.ca>
Mon, 4 Oct 2010 03:26:18 +0000 (23:26 -0400)
committerRyan Lortie <desrt@desrt.ca>
Mon, 4 Oct 2010 03:26:18 +0000 (23:26 -0400)
Ensure that the strinfo is output in little-endian byte order on big
endian machines.

GSettings is now passing all of its tests on PowerPC.

Bug #630968 is closed.

gio/glib-compile-schemas.c

index c2725b4..2c97261 100644 (file)
@@ -624,12 +624,18 @@ key_state_serialise (KeyState *state)
           if (state->strinfo->len)
             {
               GVariant *array;
+              guint32 *words;
               gpointer data;
               gsize size;
+              gint i;
 
               data = state->strinfo->str;
               size = state->strinfo->len;
 
+              words = data;
+              for (i = 0; i < size / sizeof (guint32); i++)
+                words[i] = GUINT32_TO_LE (words[i]);
+
               array = g_variant_new_from_data (G_VARIANT_TYPE ("au"),
                                                data, size, TRUE,
                                                g_free, data);