X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fgroff-font.c;h=12572cf4297000c13151aedcab0ee12818efc724;hb=c9b1c72477efa03e0a90f8afd9dafebc8f4b04ef;hp=d645b278433d52ad3a8b000eb0d30828ade274f4;hpb=d5d5ea4d068d9272c665358ed84a6297d5dec226;p=pspp diff --git a/src/groff-font.c b/src/groff-font.c index d645b27843..12572cf429 100644 --- a/src/groff-font.c +++ b/src/groff-font.c @@ -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;