]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix external image conversion on MS-Windows
authorEli Zaretskii <eliz@gnu.org>
Thu, 30 Jun 2022 10:50:34 +0000 (13:50 +0300)
committerEli Zaretskii <eliz@gnu.org>
Thu, 30 Jun 2022 10:50:34 +0000 (13:50 +0300)
* lisp/image/image-converter.el (image-converter--convert-magick)
(image-converter--convert): Force encoding/decoding to avoid any
text or EOL conversions, since we are reading/writing binary
data.  (Bug#56317)

lisp/image/image-converter.el

index 460ff16adb06b52515a5bf922b494b6b520e5f05..d3d560f021907dae36118cbb8075977fab87c6f7 100644 (file)
@@ -227,19 +227,21 @@ Only suffixes that map to `image-mode' are returned."
        (cadr (split-string (symbol-name image-format) "/"))))
 
 (defun image-converter--convert-magick (type source image-format)
-  (let ((command (image-converter--value type :command)))
+  (let ((command (image-converter--value type :command))
+        (coding-system-for-read 'no-conversion))
     (unless (zerop (if image-format
                        ;; We have the image data in SOURCE.
                        (progn
                          (insert source)
-                         (apply #'call-process-region (point-min) (point-max)
-                                (car command) t t nil
-                                (append
-                                 (cdr command)
-                                 (list (format "%s:-"
-                                               (image-converter--mime-type
-                                                image-format))
-                                       "png:-"))))
+                         (let ((coding-system-for-write 'no-conversion))
+                           (apply #'call-process-region (point-min) (point-max)
+                                  (car command) t t nil
+                                  (append
+                                   (cdr command)
+                                   (list (format "%s:-"
+                                                 (image-converter--mime-type
+                                                  image-format))
+                                         "png:-")))))
                      ;; SOURCE is a file name.
                      (apply #'call-process (car command)
                             nil t nil
@@ -252,18 +254,20 @@ Only suffixes that map to `image-mode' are returned."
 (cl-defmethod image-converter--convert ((type (eql 'ffmpeg)) source
                                         image-format)
   "Convert using ffmpeg."
-  (let ((command (image-converter--value type :command)))
+  (let ((command (image-converter--value type :command))
+        (coding-system-for-read 'no-conversion))
     (unless (zerop (if image-format
                        (progn
                          (insert source)
-                         (apply #'call-process-region
-                                (point-min) (point-max) (car command)
-                                t '(t nil) nil
-                                (append
-                                 (cdr command)
-                                 (list "-i" "-"
-                                       "-c:v" "png"
-                                       "-f" "image2pipe" "-"))))
+                         (let ((coding-system-for-write 'no-conversion))
+                           (apply #'call-process-region
+                                  (point-min) (point-max) (car command)
+                                  t '(t nil) nil
+                                  (append
+                                   (cdr command)
+                                   (list "-i" "-"
+                                         "-c:v" "png"
+                                         "-f" "image2pipe" "-")))))
                      (apply #'call-process
                             (car command)
                             nil '(t nil) nil