X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fgroff-font.c;h=b1c7f763aabc1c08c8df4ab6fb31968879f412f9;hb=5382abe75bbd1689aca8c922fbf084af9f6bd723;hp=835869af8e2a12bda4a92a4d9e404d16355cee2c;hpb=b18e1b9c95a478d434e9fcef9d8579d0b96b9a8d;p=pspp-builds.git diff --git a/src/groff-font.c b/src/groff-font.c index 835869af..b1c7f763 100644 --- a/src/groff-font.c +++ b/src/groff-font.c @@ -18,6 +18,7 @@ 02111-1307, USA. */ #include +#include "font.h" #include #include #include @@ -27,7 +28,6 @@ #include "alloc.h" #include "error.h" #include "filename.h" -#include "font.h" #include "hash.h" #include "pool.h" #include "str.h" @@ -600,22 +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; - 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]; - } if (old_kern) - pool_free (font->owner, 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; @@ -960,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;