Search
j0ke.net Open Build Service
>
Projects
>
multimedia
:
EL6
>
gdk-pixbuf
> gdk-pixbuf-0.22.0-xpm-whc-overflow.patch
Sign Up
|
Log In
Username
Password
Cancel
Overview
Repositories
Revisions
Requests
Users
Advanced
Attributes
Meta
File gdk-pixbuf-0.22.0-xpm-whc-overflow.patch of Package gdk-pixbuf
--- gdk-pixbuf-0.22.0/gdk-pixbuf/io-xpm.c.xpm-whc-overflow 2005-10-31 10:11:03.000000000 -0500 +++ gdk-pixbuf-0.22.0/gdk-pixbuf/io-xpm.c 2005-10-31 10:11:18.000000000 -0500 @@ -317,13 +317,6 @@ return NULL; } -/* Destroy notification function for the pixbuf */ -static void -free_buffer (guchar *pixels, gpointer data) -{ - free (pixels); -} - static gboolean xpm_color_parse (const char *spec, XColor *color) { @@ -342,7 +335,8 @@ gchar pixel_str[32]; GHashTable *color_hash; _XPMColor *colors, *color, *fallbackcolor; - guchar *pixels, *pixtmp; + guchar *pixtmp; + GdkPixbuf* pixbuf; fallbackcolor = NULL; @@ -414,12 +408,8 @@ fallbackcolor = color; } - if (is_trans) - pixels = malloc (w * h * 4); - else - pixels = malloc (w * h * 3); - - if (!pixels) { + pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, is_trans, 8, w, h); + if (!pixbuf) { g_hash_table_destroy (color_hash); free (colors); free (name_buf); @@ -427,7 +417,7 @@ } wbytes = w * cpp; - pixtmp = pixels; + pixtmp = pixbuf->pixels; for (ycnt = 0; ycnt < h; ycnt++) { buffer = (*get_buf) (op_body, handle); @@ -460,9 +450,7 @@ free (colors); free (name_buf); - return gdk_pixbuf_new_from_data (pixels, GDK_COLORSPACE_RGB, is_trans, 8, - w, h, is_trans ? (w * 4) : (w * 3), - free_buffer, NULL); + return pixbuf; } /* Shared library entry point for file loading */