* groff-font.c: (add_kern) Fix indentation.
authorBen Pfaff <blp@gnu.org>
Tue, 16 Dec 2003 05:43:20 +0000 (05:43 +0000)
committerBen Pfaff <blp@gnu.org>
Tue, 16 Dec 2003 05:43:20 +0000 (05:43 +0000)
(add_kern) Use & instead of % to take power-of-2 modulus.
(font_get_kern_adjust) Likewise.

src/ChangeLog
src/groff-font.c

index b3f668142997b06f96c42b84fff7eb0d6ace2bf8..8b6f4dedf3f30e816e8e60dd58666d3f8b455a65 100644 (file)
@@ -1,3 +1,9 @@
+Mon Dec 15 21:35:59 2003  Ben Pfaff  <blp@gnu.org>
+
+       * groff-font.c: (add_kern) Fix indentation.
+       (add_kern) Use & instead of % to take power-of-2 modulus.
+       (font_get_kern_adjust) Likewise.
+
 Fri Dec 12 23:54:37 2003  Ben Pfaff  <blp@gnu.org>
 
        * autorecode.c: (recode) Replace stupid use of memcpy() by
index d645b278433d52ad3a8b000eb0d30828ade274f4..12572cf4297000c13151aedcab0ee12818efc724 100644 (file)
@@ -600,23 +600,26 @@ add_kern (struct font_desc *font, int ch1, int ch2, int adjust)
       for (i = 0; i < font->kern_size; i++)
        font->kern[i].ch1 = -1;
 
-      if (old_kern) {
-       for (i = 0; i < old_kern_size; i++)
-         {
-           if (old_kern[i].ch1 == -1)
-             continue;
-
-           j = hash_kern (old_kern[i].ch1, old_kern[i].ch2) % font->kern_size;
-           while (font->kern[j].ch1 != -1)
-             if (0 == j--)
-               j = font->kern_size - 1;
-           font->kern[j] = old_kern[i];
-         }
-       pool_free (font->owner, old_kern);
-      }
+      if (old_kern)
+        {
+          for (i = 0; i < old_kern_size; i++)
+            {
+              if (old_kern[i].ch1 == -1)
+                continue;
+
+              j = (hash_kern (old_kern[i].ch1, old_kern[i].ch2)
+                   & (font->kern_size - 1));
+              while (font->kern[j].ch1 != -1)
+                if (0 == j--)
+                  j = font->kern_size - 1;
+              font->kern[j] = old_kern[i];
+            }
+          pool_free (font->owner, old_kern);
+        }
     }
 
-  for (i = hash_kern (ch1, ch2) % font->kern_size; font->kern[i].ch1 != -1;)
+  for (i = hash_kern (ch1, ch2) & (font->kern_size - 1);
+       font->kern[i].ch1 != -1; )
     if (0 == i--)
       i = font->kern_size - 1;
   font->kern[i].ch1 = ch1;
@@ -961,7 +964,8 @@ font_get_kern_adjust (const struct font_desc *font, int ch1, int ch2)
 
   if (!font->kern)
     return 0;
-  for (i = hash_kern (ch1, ch2) % font->kern_size; font->kern[i].ch1 != -1;)
+  for (i = hash_kern (ch1, ch2) & (font->kern_size - 1);
+       font->kern[i].ch1 != -1;)
     {
       if (font->kern[i].ch1 == ch1 && font->kern[i].ch2 == ch2)
        return font->kern[i].adjust;