From: Stefan Kangas Date: Fri, 9 Sep 2022 00:32:08 +0000 (+0200) Subject: Display librsvg error when loading bad SVG X-Git-Tag: emacs-29.0.90~1856^2~654 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=816106b7e6a930d55e723e7c4d9d5f664ecd5520;p=emacs.git Display librsvg error when loading bad SVG * src/image.c (svg_load_image): Display the error message from librsvg when parsing a bad SVG image file. * test/manual/image-tests.el (image-tests-load-image/svg-invalid): New test. --- diff --git a/src/image.c b/src/image.c index f5004c2c4c7..549fe30ef7c 100644 --- a/src/image.c +++ b/src/image.c @@ -1,6 +1,6 @@ /* Functions for image support on window system. -Copyright (C) 1989, 1992-2022 Free Software Foundation, Inc. +Copyright (C) 1989-2022 Free Software Foundation, Inc. This file is part of GNU Emacs. @@ -11491,7 +11491,7 @@ svg_load_image (struct frame *f, struct image *img, char *contents, if (!image_create_x_image_and_pixmap (f, img, width, height, 0, &ximg, 0)) { g_object_unref (pixbuf); - return 0; + return false; } init_color_table (); @@ -11536,7 +11536,7 @@ svg_load_image (struct frame *f, struct image *img, char *contents, image_put_x_image (f, img, ximg, 0); } - return 1; + return true; rsvg_error: if (rsvg_handle) @@ -11547,11 +11547,11 @@ svg_load_image (struct frame *f, struct image *img, char *contents, if (css && !STRINGP (lcss)) xfree (css); #endif - /* FIXME: Use error->message so the user knows what is the actual - problem with the image. */ - image_error ("Error parsing SVG image"); + image_error ("Error parsing SVG image: %s", + /* The -1 removes an extra newline. */ + make_string (err->message, strlen (err->message) - 1)); g_clear_error (&err); - return 0; + return false; } #endif /* defined (HAVE_RSVG) */ diff --git a/test/manual/image-tests.el b/test/manual/image-tests.el index 2565ff29c9b..c726845bd3b 100644 --- a/test/manual/image-tests.el +++ b/test/manual/image-tests.el @@ -78,6 +78,17 @@ (image-tests-make-load-image-test 'xbm) (image-tests-make-load-image-test 'xpm) +(ert-deftest image-tests-load-image/svg-invalid () + (with-temp-buffer + (pop-to-buffer (current-buffer)) + (insert (propertize " " + 'display '(image :data + "invalid foo bar" + :type svg))) + (redisplay)) + (with-current-buffer "*Messages*" + (should (string-search "XML parse error" (buffer-string))))) + ;;;; image-test-size