diff options
author | Graham Gower <graham.gower@gmail.com> | 2009-08-25 21:29:35 +0000 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2009-08-31 15:51:52 -0700 |
commit | 5e51870a3ebcba57fb47fd221b7d79594e9d3b73 (patch) | |
tree | d5bf66a068be9ad2bc20d73734572189b1bb9374 /recipes/netsurf/files | |
parent | 3c1aac7f71956dfb5acd9a76e9d5210ff5e2b189 (diff) |
netsurf: fixes for GCC-4.4, from netsurf svn.
Netsurf appears to be statically linked with these libraries, so I
bumped its PR too.
Signed-off-by: Graham Gower <graham.gower@gmail.com>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'recipes/netsurf/files')
-rw-r--r-- | recipes/netsurf/files/hubbub-uninitialised.patch | 35 | ||||
-rw-r--r-- | recipes/netsurf/files/libnsgif-strict-aliasing.patch | 82 |
2 files changed, 117 insertions, 0 deletions
diff --git a/recipes/netsurf/files/hubbub-uninitialised.patch b/recipes/netsurf/files/hubbub-uninitialised.patch new file mode 100644 index 0000000000..4f87120c31 --- /dev/null +++ b/recipes/netsurf/files/hubbub-uninitialised.patch @@ -0,0 +1,35 @@ +http://source.netsurf-browser.org/?view=rev&revision=7398 +Initialise variables to stop GCC 4.4 complaining (credit: Jeroen Habraken) + +--- hubbub/src/tokeniser/tokeniser.c 2009/04/06 15:22:16 7052 ++++ hubbub/src/tokeniser/tokeniser.c 2009/05/05 17:18:41 7398 +@@ -787,7 +787,7 @@ + + 1); + } else { + parserutils_error error; +- const uint8_t *cptr; ++ const uint8_t *cptr = NULL; + error = parserutils_inputstream_peek( + tokeniser->input, + tokeniser->context.pending, +@@ -1590,8 +1590,8 @@ + tokeniser->context.match_entity.length + + 1; + } else { +- size_t len; +- const uint8_t *cptr; ++ size_t len = 0; ++ const uint8_t *cptr = NULL; + parserutils_error error; + + error = parserutils_inputstream_peek( +@@ -3137,7 +3137,7 @@ + { + hubbub_token token; + size_t len; +- const uint8_t *cptr; ++ const uint8_t *cptr = NULL; + parserutils_error error; + + /* Calling this with nothing to output is a probable bug */ + diff --git a/recipes/netsurf/files/libnsgif-strict-aliasing.patch b/recipes/netsurf/files/libnsgif-strict-aliasing.patch new file mode 100644 index 0000000000..4fe913c491 --- /dev/null +++ b/recipes/netsurf/files/libnsgif-strict-aliasing.patch @@ -0,0 +1,82 @@ +http://source.netsurf-browser.org/?view=rev&revision=9027 +Stop utterly insane palette entry population. +Palette entries are always ABGR, regardless of platform endianness. +This change probably breaks big-endian platforms which, under the old approach, +had palette entries of the form RGBA (assuming I understood the code correctly). + +http://source.netsurf-browser.org/?view=rev&revision=9138 +Fix palette entry population some more. Hopefully, it's completely endian +agnostic now and still builds with GCC 4.4 + +--- libnsgif/src/libnsgif.c 2009/03/29 01:43:27 6984 ++++ libnsgif/src/libnsgif.c 2009/08/09 22:24:14 9138 +@@ -319,19 +319,34 @@ + return GIF_INSUFFICIENT_DATA; + } + for (index = 0; index < gif->colour_table_size; index++) { +- char colour[] = {0, 0, 0, (char)0xff}; +- colour[0] = gif_data[0]; +- colour[1] = gif_data[1]; +- colour[2] = gif_data[2]; +- gif->global_colour_table[index] = *((int *) (void *) colour); ++ /* Gif colour map contents are r,g,b. ++ * ++ * We want to pack them bytewise into the ++ * colour table, such that the red component ++ * is in byte 0 and the alpha component is in ++ * byte 3. ++ */ ++ unsigned char *entry = (unsigned char *) &gif-> ++ global_colour_table[index]; ++ ++ entry[0] = gif_data[0]; /* r */ ++ entry[1] = gif_data[1]; /* g */ ++ entry[2] = gif_data[2]; /* b */ ++ entry[3] = 0xff; /* a */ ++ + gif_data += 3; + } + gif->buffer_position = (gif_data - gif->gif_data); + } else { + /* Create a default colour table with the first two colours as black and white + */ +- gif->global_colour_table[0] = 0xff000000; +- gif->global_colour_table[1] = 0xffffffff; ++ unsigned int *entry = gif->global_colour_table; ++ ++ entry[0] = 0x00000000; ++ /* Force Alpha channel to opaque */ ++ ((unsigned char *) entry)[3] = 0xff; ++ ++ entry[1] = 0xffffffff; + } + } + +@@ -844,11 +859,21 @@ + colour_table = gif->local_colour_table; + if (!clear_image) { + for (index = 0; index < colour_table_size; index++) { +- char colour[] = {0, 0, 0, (char)0xff}; +- colour[0] = gif_data[0]; +- colour[1] = gif_data[1]; +- colour[2] = gif_data[2]; +- colour_table[index] = *((int *) (void *) colour); ++ /* Gif colour map contents are r,g,b. ++ * ++ * We want to pack them bytewise into the ++ * colour table, such that the red component ++ * is in byte 0 and the alpha component is in ++ * byte 3. ++ */ ++ unsigned char *entry = ++ (unsigned char *) &colour_table[index]; ++ ++ entry[0] = gif_data[0]; /* r */ ++ entry[1] = gif_data[1]; /* g */ ++ entry[2] = gif_data[2]; /* b */ ++ entry[3] = 0xff; /* a */ ++ + gif_data += 3; + } + } else { + |