resources: compiler: Fix resources on big endian architectures

Resources are always little endian, so the gvdb is byteswapped. When looking
up the value, it would return a new byteswapped variant, making the data
returned from do_lookup() invalid once that variant is unref'd. Since
byteswapping doesn't matter for the "ay" data anyway, just use
gvdb_table_get_raw_value() instead and only byteswap the length and flag
values.

https://bugzilla.gnome.org/show_bug.cgi?id=673409
This commit is contained in:
Christian Persch 2012-04-09 15:34:10 +02:00
parent cf619cffb7
commit 5ef34e5f11

View File

@ -287,7 +287,7 @@ gboolean do_lookup (GResource *resource,
free_path[path_len-1] = 0;
}
value = gvdb_table_get_value (resource->table, path);
value = gvdb_table_get_raw_value (resource->table, path);
if (value == NULL)
{
@ -305,6 +305,9 @@ gboolean do_lookup (GResource *resource,
&_flags,
&array);
_size = GUINT32_FROM_LE (_size);
_flags = GUINT32_FROM_LE (_flags);
if (size)
*size = _size;
if (flags)