]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix GDI+ image loading by file name
authorEli Zaretskii <eliz@gnu.org>
Sat, 25 Apr 2020 13:37:46 +0000 (16:37 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sat, 25 Apr 2020 13:37:46 +0000 (16:37 +0300)
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.

src/image.c
src/w32image.c

index ffe2f607e52bf4ab1cc6e820fc27135df95b8660..c8a192aaaf1d8a4c7e92617051672009681bdcd1 100644 (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;
index 8d39a09dc7e638e08e8ff1b0bf500ea4e86c2ead..70b2eb29b87d6f0a263294d1109e8276c258bb6a 100644 (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);