Followup to 2011-10-19T09:48:35Z!eliz@gnu.org.
[bpt/emacs.git] / src / font.c
index cc59399..1a4742b 100644 (file)
@@ -21,6 +21,7 @@ You should have received a copy of the GNU General Public License
 along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <config.h>
+#include <float.h>
 #include <stdio.h>
 #include <ctype.h>
 #include <setjmp.h>
@@ -1333,7 +1334,7 @@ font_parse_fcname (char *name, Lisp_Object font)
        {
          int decimal = 0, size_found = 1;
          for (q = p + 1; *q && *q != ':'; q++)
-           if (! isdigit(*q))
+           if (! isdigit (*q))
              {
                if (*q != '.' || decimal)
                  {
@@ -1591,38 +1592,75 @@ font_unparse_fcname (Lisp_Object font, int pixel_size, char *name, int nbytes)
 
   p = name;
   lim = name + nbytes;
-# define APPEND_SNPRINTF(args)                 \
-    do {                                       \
-      int len = snprintf args;                 \
-      if (! (0 <= len && len < lim - p))       \
-       return -1;                              \
-      p += len;                                        \
-    } while (0)
   if (! NILP (family))
-    APPEND_SNPRINTF ((p, lim - p, "%s", SSDATA (family)));
+    {
+      int len = snprintf (p, lim - p, "%s", SSDATA (family));
+      if (! (0 <= len && len < lim - p))
+       return -1;
+      p += len;
+    }
   if (point_size > 0)
-    APPEND_SNPRINTF ((p, lim - p, "-%d" + (p == name), point_size));
+    {
+      int len = snprintf (p, lim - p, "-%d" + (p == name), point_size);
+      if (! (0 <= len && len < lim - p))
+       return -1;
+      p += len;
+    }
   else if (pixel_size > 0)
-    APPEND_SNPRINTF ((p, lim - p, ":pixelsize=%d", pixel_size));
+    {
+      int len = snprintf (p, lim - p, ":pixelsize=%d", pixel_size);
+      if (! (0 <= len && len < lim - p))
+       return -1;
+      p += len;
+    }
   if (! NILP (AREF (font, FONT_FOUNDRY_INDEX)))
-    APPEND_SNPRINTF ((p, lim - p, ":foundry=%s",
-                     SSDATA (SYMBOL_NAME (AREF (font,
-                                                FONT_FOUNDRY_INDEX)))));
+    {
+      int len = snprintf (p, lim - p, ":foundry=%s",
+                         SSDATA (SYMBOL_NAME (AREF (font,
+                                                    FONT_FOUNDRY_INDEX))));
+      if (! (0 <= len && len < lim - p))
+       return -1;
+      p += len;
+    }
   for (i = 0; i < 3; i++)
     if (! NILP (styles[i]))
-      APPEND_SNPRINTF ((p, lim - p, ":%s=%s", style_names[i],
-                       SSDATA (SYMBOL_NAME (styles[i]))));
+      {
+       int len = snprintf (p, lim - p, ":%s=%s", style_names[i],
+                           SSDATA (SYMBOL_NAME (styles[i])));
+       if (! (0 <= len && len < lim - p))
+         return -1;
+       p += len;
+      }
+
   if (INTEGERP (AREF (font, FONT_DPI_INDEX)))
-    APPEND_SNPRINTF ((p, lim - p, ":dpi=%"pI"d",
-                     XINT (AREF (font, FONT_DPI_INDEX))));
+    {
+      int len = snprintf (p, lim - p, ":dpi=%"pI"d",
+                         XINT (AREF (font, FONT_DPI_INDEX)));
+      if (! (0 <= len && len < lim - p))
+       return -1;
+      p += len;
+    }
+
   if (INTEGERP (AREF (font, FONT_SPACING_INDEX)))
-    APPEND_SNPRINTF ((p, lim - p, ":spacing=%"pI"d",
-                     XINT (AREF (font, FONT_SPACING_INDEX))));
+    {
+      int len = snprintf (p, lim - p, ":spacing=%"pI"d",
+                         XINT (AREF (font, FONT_SPACING_INDEX)));
+      if (! (0 <= len && len < lim - p))
+       return -1;
+      p += len;
+    }
+
   if (INTEGERP (AREF (font, FONT_AVGWIDTH_INDEX)))
-    APPEND_SNPRINTF ((p, lim - p,
-                     (XINT (AREF (font, FONT_AVGWIDTH_INDEX)) == 0
-                      ? ":scalable=true"
-                      : ":scalable=false")));
+    {
+      int len = snprintf (p, lim - p,
+                         (XINT (AREF (font, FONT_AVGWIDTH_INDEX)) == 0
+                          ? ":scalable=true"
+                          : ":scalable=false"));
+      if (! (0 <= len && len < lim - p))
+       return -1;
+      p += len;
+    }
+
   return (p - name);
 }
 
@@ -3201,7 +3239,7 @@ font_open_for_lface (FRAME_PTR f, Lisp_Object entity, Lisp_Object *attrs, Lisp_O
          if (INTEGERP (height))
            pt = XINT (height);
          else
-           abort(); /* We should never end up here.  */
+           abort (); /* We should never end up here.  */
        }
 
       pt /= 10;
@@ -3209,7 +3247,7 @@ font_open_for_lface (FRAME_PTR f, Lisp_Object entity, Lisp_Object *attrs, Lisp_O
 #ifdef HAVE_NS
       if (size == 0)
         {
-          Lisp_Object ffsize = get_frame_param(f, Qfontsize);
+          Lisp_Object ffsize = get_frame_param (f, Qfontsize);
           size = NUMBERP (ffsize) ? POINT_TO_PIXEL (XINT (ffsize), f->resy) : 0;
         }
 #endif