diff options
| author | Juanma Barranquero | 2014-03-27 02:17:54 +0100 |
|---|---|---|
| committer | Juanma Barranquero | 2014-03-27 02:17:54 +0100 |
| commit | b9b37dd04e6f60ef16738efe1b396a9e0a461d86 (patch) | |
| tree | 8d2a7023465f02ba361ce562f8583014a66c0bfa /src | |
| parent | 8ab9876a815b82107f4640e597dac6710a530848 (diff) | |
| download | emacs-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/ChangeLog | 6 | ||||
| -rw-r--r-- | src/image.c | 10 |
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 @@ | |||
| 1 | 2014-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 | |||
| 1 | 2014-03-26 Paul Eggert <eggert@cs.ucla.edu> | 7 | 2014-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 | |||
| 8661 | DEF_IMGLIB_FN (gboolean, rsvg_handle_write, (RsvgHandle *, const guchar *, gsize, GError **)); | 8661 | DEF_IMGLIB_FN (gboolean, rsvg_handle_write, (RsvgHandle *, const guchar *, gsize, GError **)); |
| 8662 | DEF_IMGLIB_FN (gboolean, rsvg_handle_close, (RsvgHandle *, GError **)); | 8662 | DEF_IMGLIB_FN (gboolean, rsvg_handle_close, (RsvgHandle *, GError **)); |
| 8663 | DEF_IMGLIB_FN (GdkPixbuf *, rsvg_handle_get_pixbuf, (RsvgHandle *)); | 8663 | DEF_IMGLIB_FN (GdkPixbuf *, rsvg_handle_get_pixbuf, (RsvgHandle *)); |
| 8664 | DEF_IMGLIB_FN (void *, rsvg_handle_set_size_callback, (RsvgHandle *, RsvgSizeFunc, gpointer, GDestroyNotify)); | ||
| 8665 | 8664 | ||
| 8666 | DEF_IMGLIB_FN (int, gdk_pixbuf_get_width, (const GdkPixbuf *)); | 8665 | DEF_IMGLIB_FN (int, gdk_pixbuf_get_width, (const GdkPixbuf *)); |
| 8667 | DEF_IMGLIB_FN (int, gdk_pixbuf_get_height, (const GdkPixbuf *)); | 8666 | DEF_IMGLIB_FN (int, gdk_pixbuf_get_height, (const GdkPixbuf *)); |
| @@ -8683,13 +8682,18 @@ Lisp_Object Qgdk_pixbuf, Qglib, Qgobject; | |||
| 8683 | static bool | 8682 | static bool |
| 8684 | init_svg_functions (void) | 8683 | init_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); |