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.
This commit is contained in:
parent
ef17ba8370
commit
816106b7e6
2 changed files with 18 additions and 7 deletions
14
src/image.c
14
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) */
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue