diff options
-rw-r--r-- | recipes/netsurf/files/hubbub-uninitialised.patch | 35 | ||||
-rw-r--r-- | recipes/netsurf/files/libnsgif-strict-aliasing.patch | 82 | ||||
-rw-r--r-- | recipes/netsurf/hubbub_0.0.1.bb | 5 | ||||
-rw-r--r-- | recipes/netsurf/libnsgif_0.0.1.bb | 5 | ||||
-rw-r--r-- | recipes/netsurf/netsurf_2.1.bb | 2 |
5 files changed, 127 insertions, 2 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 { + diff --git a/recipes/netsurf/hubbub_0.0.1.bb b/recipes/netsurf/hubbub_0.0.1.bb index 0d70b4165d..bfbe71ffcf 100644 --- a/recipes/netsurf/hubbub_0.0.1.bb +++ b/recipes/netsurf/hubbub_0.0.1.bb @@ -5,7 +5,10 @@ PRIORITY = "optional" LICENSE = "MIT" DEPENDS = "libparserutils" -SRC_URI = "http://www.netsurf-browser.org/projects/releases/hubbub-${PV}-src.tar.gz" +SRC_URI = "http://www.netsurf-browser.org/projects/releases/hubbub-${PV}-src.tar.gz \ + file://hubbub-uninitialised.patch;patch=1" + +PR = "r1" inherit pkgconfig diff --git a/recipes/netsurf/libnsgif_0.0.1.bb b/recipes/netsurf/libnsgif_0.0.1.bb index 3b9cfc2930..f2b113831f 100644 --- a/recipes/netsurf/libnsgif_0.0.1.bb +++ b/recipes/netsurf/libnsgif_0.0.1.bb @@ -4,7 +4,10 @@ SECTION = "libs" PRIORITY = "optional" LICENSE = "MIT" -SRC_URI = "http://www.netsurf-browser.org/projects/releases/libnsgif-${PV}-src.tar.gz" +SRC_URI = "http://www.netsurf-browser.org/projects/releases/libnsgif-${PV}-src.tar.gz \ + file://libnsgif-strict-aliasing.patch;patch=1" + +PR = "r1" inherit pkgconfig diff --git a/recipes/netsurf/netsurf_2.1.bb b/recipes/netsurf/netsurf_2.1.bb index 073f17f53b..849a8e5fcf 100644 --- a/recipes/netsurf/netsurf_2.1.bb +++ b/recipes/netsurf/netsurf_2.1.bb @@ -11,6 +11,8 @@ SRC_URI = "http://www.netsurf-browser.org/downloads/releases/netsurf-${PV}-src.t file://netsurf.desktop \ file://Makefile.config" +PR = "r1" + # Workaround for 2.1 tarball (unpacks into netsurf/, not netsurf-2.1/ ) S = "${WORKDIR}/netsurf" |