aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJuanma Barranquero2014-03-27 02:17:54 +0100
committerJuanma Barranquero2014-03-27 02:17:54 +0100
commitb9b37dd04e6f60ef16738efe1b396a9e0a461d86 (patch)
tree8d2a7023465f02ba361ce562f8583014a66c0bfa /src
parent8ab9876a815b82107f4640e597dac6710a530848 (diff)
downloademacs-b9b37dd04e6f60ef16738efe1b396a9e0a461d86.tar.gz
emacs-b9b37dd04e6f60ef16738efe1b396a9e0a461d86.zip
src/image.c: Avoid partial load of SVG libraries.
(init_svg_functions): When loading SVG-related libraries, free already loaded libraries if the initialization fails. (rsvg_handle_set_size_callback): Remove declaration, unused.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog6
-rw-r--r--src/image.c10
2 files changed, 13 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 996bbb78995..10cc66aceed 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,9 @@
12014-03-27 Juanma Barranquero <lekktu@gmail.com>
2
3 * image.c (init_svg_functions): When loading SVG-related libraries,
4 free already loaded libraries if the initialization fails.
5 (rsvg_handle_set_size_callback): Remove declaration, unused.
6
12014-03-26 Paul Eggert <eggert@cs.ucla.edu> 72014-03-26 Paul Eggert <eggert@cs.ucla.edu>
2 8
3 Fix core dump in char-equal (Bug#17011). 9 Fix core dump in char-equal (Bug#17011).
diff --git a/src/image.c b/src/image.c
index 6b33e1de8a1..29a04e7da81 100644
--- a/src/image.c
+++ b/src/image.c
@@ -8661,7 +8661,6 @@ DEF_IMGLIB_FN (void, rsvg_handle_get_dimensions, (RsvgHandle *, RsvgDimensionDat
8661DEF_IMGLIB_FN (gboolean, rsvg_handle_write, (RsvgHandle *, const guchar *, gsize, GError **)); 8661DEF_IMGLIB_FN (gboolean, rsvg_handle_write, (RsvgHandle *, const guchar *, gsize, GError **));
8662DEF_IMGLIB_FN (gboolean, rsvg_handle_close, (RsvgHandle *, GError **)); 8662DEF_IMGLIB_FN (gboolean, rsvg_handle_close, (RsvgHandle *, GError **));
8663DEF_IMGLIB_FN (GdkPixbuf *, rsvg_handle_get_pixbuf, (RsvgHandle *)); 8663DEF_IMGLIB_FN (GdkPixbuf *, rsvg_handle_get_pixbuf, (RsvgHandle *));
8664DEF_IMGLIB_FN (void *, rsvg_handle_set_size_callback, (RsvgHandle *, RsvgSizeFunc, gpointer, GDestroyNotify));
8665 8664
8666DEF_IMGLIB_FN (int, gdk_pixbuf_get_width, (const GdkPixbuf *)); 8665DEF_IMGLIB_FN (int, gdk_pixbuf_get_width, (const GdkPixbuf *));
8667DEF_IMGLIB_FN (int, gdk_pixbuf_get_height, (const GdkPixbuf *)); 8666DEF_IMGLIB_FN (int, gdk_pixbuf_get_height, (const GdkPixbuf *));
@@ -8683,13 +8682,18 @@ Lisp_Object Qgdk_pixbuf, Qglib, Qgobject;
8683static bool 8682static bool
8684init_svg_functions (void) 8683init_svg_functions (void)
8685{ 8684{
8686 HMODULE library, gdklib, glib, gobject; 8685 HMODULE library, gdklib = NULL, glib = NULL, gobject = NULL;
8687 8686
8688 if (!(glib = w32_delayed_load (Qglib)) 8687 if (!(glib = w32_delayed_load (Qglib))
8689 || !(gobject = w32_delayed_load (Qgobject)) 8688 || !(gobject = w32_delayed_load (Qgobject))
8690 || !(gdklib = w32_delayed_load (Qgdk_pixbuf)) 8689 || !(gdklib = w32_delayed_load (Qgdk_pixbuf))
8691 || !(library = w32_delayed_load (Qsvg))) 8690 || !(library = w32_delayed_load (Qsvg)))
8692 return 0; 8691 {
8692 if (gdklib) FreeLibrary (gdklib);
8693 if (gobject) FreeLibrary (gobject);
8694 if (glib) FreeLibrary (glib);
8695 return 0;
8696 }
8693 8697
8694 LOAD_IMGLIB_FN (library, rsvg_handle_new); 8698 LOAD_IMGLIB_FN (library, rsvg_handle_new);
8695 LOAD_IMGLIB_FN (library, rsvg_handle_get_dimensions); 8699 LOAD_IMGLIB_FN (library, rsvg_handle_get_dimensions);