comparison pidgin/gtkimhtml.c @ 32156:1693114a2655

applied changes from 6cf1aee8ac5e3c836af832eaf26ccedd611dc70b through e802003adbf0be4496de3de8ac03b47c1e471d00 Original commit message: Start looking at the GError parameter every time we call these functions: - gdk_pixbuf_loader_write - gdk_pixbuf_loader_close - gdk_pixbuf_new_from_file - gdk_pixbuf_new_from_file_at_size - gdk_pixbuf_new_from_file_at_scale There are times when gdkpixbuf returns a semi-invalid GdkPixbuf object and also sets the GError. If this happens we want to discard and ignore the GdkPixbuf object because it can cause problems. For example, calling gdk_pixbuf_scale_simple() causes gdkpixbuf to rapidly consume memory in an infinite loop. And that's bad. This commit adds some helper functions to gtkutils.[c|h] that make it a little easier to check the GError value. We should use them everywhere we call any of the above functions.
author Mark Doliner <mark@kingant.net>
date Wed, 22 Jun 2011 07:09:42 +0000
parents ac2cf73dbab8
children accce7b79737 a8f62638417e
comparison
equal deleted inserted replaced
32155:5ffd5582f5fe 32156:1693114a2655
5055 gpointer data; 5055 gpointer data;
5056 size_t len; 5056 size_t len;
5057 5057
5058 data = imhtml->funcs->image_get_data(image); 5058 data = imhtml->funcs->image_get_data(image);
5059 len = imhtml->funcs->image_get_size(image); 5059 len = imhtml->funcs->image_get_size(image);
5060 5060 if (data && len)
5061 if (data && len) { 5061 anim = pidgin_pixbuf_anim_from_data(data, len);
5062 GdkPixbufLoader *loader = gdk_pixbuf_loader_new();
5063 gdk_pixbuf_loader_write(loader, data, len, NULL);
5064 gdk_pixbuf_loader_close(loader, NULL);
5065 anim = gdk_pixbuf_loader_get_animation(loader);
5066 if (anim)
5067 g_object_ref(G_OBJECT(anim));
5068 g_object_unref(G_OBJECT(loader));
5069 }
5070 5062
5071 } 5063 }
5072 5064
5073 if (anim) { 5065 if (anim) {
5074 struct im_image_data *t = g_new(struct im_image_data, 1); 5066 struct im_image_data *t = g_new(struct im_image_data, 1);