From: Lars Ingebrigtsen <larsi@gnus.org>
Date: Sat, 20 Feb 2016 06:55:43 +0000 (+1100)
Subject: Get explicit width/height + scale computations right
X-Git-Tag: emacs-26.0.90~2529
X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=ad1951dbfb7e289553c25474efdfa02f83c16e71;p=emacs.git

Get explicit width/height + scale computations right

* src/image.c (compute_image_size): :scale should also be
taken into account when :width and :height are explicitly names.
---

diff --git a/src/image.c b/src/image.c
index af65fdec7dc..9ba1a7972f0 100644
--- a/src/image.c
+++ b/src/image.c
@@ -8075,18 +8075,21 @@ compute_image_size (size_t width, size_t height,
   int desired_width, desired_height;
   double scale = 1;
 
+  value = image_spec_value (spec, QCscale, NULL);
+  if (NUMBERP (value))
+    scale = extract_float (value);
+
   /* If width and/or height is set in the display spec assume we want
      to scale to those values.  If either h or w is unspecified, the
      unspecified should be calculated from the specified to preserve
      aspect ratio.  */
   value = image_spec_value (spec, QCwidth, NULL);
-  desired_width = NATNUMP (value) ? min (XFASTINT (value), INT_MAX) : -1;
+  desired_width = NATNUMP (value) ?
+    min (XFASTINT (value) * scale, INT_MAX) : -1;
   value = image_spec_value (spec, QCheight, NULL);
-  desired_height = NATNUMP (value) ? min (XFASTINT (value), INT_MAX) : -1;
+  desired_height = NATNUMP (value) ?
+    min (XFASTINT (value) * scale, INT_MAX) : -1;
 
-  value = image_spec_value (spec, QCscale, NULL);
-  if (NUMBERP (value))
-    scale = extract_float (value);
   width = width * scale;
   height = height * scale;