1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-30 12:21:25 -08:00

Fix GDI+ image loading by file name

Without a call to image_find_image, we can get a file name that
is relative to data-directory/images/, or a file name that
starts with "~/", in which case w32_load_image would fail.
* src/image.c (native_image_load): Call image_find_image_file to
resolve and encode the image file name.
* src/w32image.c (w32_load_image): No need to encode the file
name, as it's already encoded by native_image_load.
This commit is contained in:
Eli Zaretskii 2020-04-25 16:37:46 +03:00
parent 2a3a0a843f
commit f7748ad682
2 changed files with 6 additions and 5 deletions

View file

@ -6308,14 +6308,16 @@ native_image_p (Lisp_Object object)
static bool
native_image_load (struct frame *f, struct image *img)
{
Lisp_Object image_file = image_spec_value (img->spec, QCfile, NULL);
if (STRINGP (image_file))
image_file = image_find_image_file (image_file);
# ifdef HAVE_NTGUI
return w32_load_image (f, img,
image_spec_value (img->spec, QCfile, NULL),
return w32_load_image (f, img, image_file,
image_spec_value (img->spec, QCdata, NULL));
# elif defined HAVE_NS
return ns_load_image (f, img,
image_spec_value (img->spec, QCfile, NULL),
return ns_load_image (f, img, image_file,
image_spec_value (img->spec, QCdata, NULL));
# else
return 0;

View file

@ -414,7 +414,6 @@ w32_load_image (struct frame *f, struct image *img,
and succeeded. We have a valid token and GDI+ is active. */
if (STRINGP (spec_file))
{
spec_file = ENCODE_FILE (spec_file);
const char *fn = map_w32_filename (SSDATA (spec_file), NULL);
wchar_t filename_w[MAX_PATH];
filename_to_utf16 (fn, filename_w);