Commit 5ef34e5f authored by Christian Persch's avatar Christian Persch

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
parent cf619cff
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment