diff options
Diffstat (limited to 'print/poppler/patches/patch-bb')
-rw-r--r-- | print/poppler/patches/patch-bb | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/print/poppler/patches/patch-bb b/print/poppler/patches/patch-bb new file mode 100644 index 00000000000..421a5adc77f --- /dev/null +++ b/print/poppler/patches/patch-bb @@ -0,0 +1,51 @@ +$NetBSD: patch-bb,v 1.3 2009/10/21 10:18:57 drochner Exp $ + +--- glib/poppler-page.cc.orig 2009-09-09 23:22:31.000000000 +0200 ++++ glib/poppler-page.cc +@@ -609,28 +609,28 @@ create_surface_from_thumbnail_data (guch + gint rowstride) + { + guchar *cairo_pixels; ++ gint cairo_stride; + cairo_surface_t *surface; +- static cairo_user_data_key_t key; + int j; + +- cairo_pixels = (guchar *)g_malloc (4 * width * height); +- surface = cairo_image_surface_create_for_data ((unsigned char *)cairo_pixels, +- CAIRO_FORMAT_RGB24, +- width, height, 4 * width); +- cairo_surface_set_user_data (surface, &key, +- cairo_pixels, (cairo_destroy_func_t)g_free); ++ surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, width, height); ++ if (cairo_surface_status (surface)) ++ return NULL; ++ ++ cairo_pixels = cairo_image_surface_get_data (surface); ++ cairo_stride = cairo_image_surface_get_stride (surface); + + for (j = height; j; j--) { + guchar *p = data; + guchar *q = cairo_pixels; + guchar *end = p + 3 * width; +- ++ + while (p < end) { + #if G_BYTE_ORDER == G_LITTLE_ENDIAN + q[0] = p[2]; + q[1] = p[1]; + q[2] = p[0]; +-#else ++#else + q[1] = p[0]; + q[2] = p[1]; + q[3] = p[2]; +@@ -640,7 +640,7 @@ create_surface_from_thumbnail_data (guch + } + + data += rowstride; +- cairo_pixels += 4 * width; ++ cairo_pixels += cairo_stride; + } + + return surface; |