diff options
author | Peter Breitenlohner <peb@mppmu.mpg.de> | 2014-08-09 10:31:23 +0000 |
---|---|---|
committer | Peter Breitenlohner <peb@mppmu.mpg.de> | 2014-08-09 10:31:23 +0000 |
commit | e890df6dcc6e4f636e4183ff984b57deb8f26d14 (patch) | |
tree | 14b623aed7783950ae3545097347c683c37137a1 /Build/source/texk/web2c/omegafonts | |
parent | 83ce83099932cd306181cae5ac417de1d5a54902 (diff) |
texk/web2c/omegafonts: Fixed a bug in checking for infinite ligature loops
git-svn-id: svn://tug.org/texlive/trunk@34883 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/omegafonts')
-rw-r--r-- | Build/source/texk/web2c/omegafonts/ChangeLog | 5 | ||||
-rw-r--r-- | Build/source/texk/web2c/omegafonts/ligkern_routines.c | 11 | ||||
-rwxr-xr-x | Build/source/texk/web2c/omegafonts/yannis.test | 37 |
3 files changed, 31 insertions, 22 deletions
diff --git a/Build/source/texk/web2c/omegafonts/ChangeLog b/Build/source/texk/web2c/omegafonts/ChangeLog index f1294c2b21b..766fa07a17d 100644 --- a/Build/source/texk/web2c/omegafonts/ChangeLog +++ b/Build/source/texk/web2c/omegafonts/ChangeLog @@ -1,3 +1,8 @@ +2014-08-09 Peter Breitenlohner <peb@mppmu.mpg.de> + + * ligkern_routines.c (l_hash_lookup): Fixed a bug in checking + for infinite ligature loops. + 2014-08-08 Peter Breitenlohner <peb@mppmu.mpg.de> * char_routines.c: Compute checksum as in Web2C version. diff --git a/Build/source/texk/web2c/omegafonts/ligkern_routines.c b/Build/source/texk/web2c/omegafonts/ligkern_routines.c index 6da01bf8dcf..6ae730c4024 100644 --- a/Build/source/texk/web2c/omegafonts/ligkern_routines.c +++ b/Build/source/texk/web2c/omegafonts/ligkern_routines.c @@ -110,7 +110,7 @@ void set_skip_command(unsigned val) { if (lk_step_ended == TRUE) { - if (val>128) { + if (val>127) { warning_0("Maximum SKIP amount is 127; ignored"); } else { lig_kern_table[nl-1].entries[0] = val; @@ -382,11 +382,10 @@ l_hash_lookup(unsigned x, unsigned y) unsigned key = (x & 0x7fff)*(y & 0x7fff) % PRIME; hash_list L = hash_table[key]; - if (L==NULL) return NULL; - while (L->x < x) L = L->ptr; - if (L->x != x) return NULL; - while ((L->x == x) && (L->y < y)) L = L->ptr; - if (L->y != y) return NULL; + while ((L != NULL) && ((x > L->x) || ((x == L->x) && (y > L->y)))) + L = L->ptr; + if ((L == NULL) || (x < L->x) || ((x == L->x) && (y < L->y))) + return NULL; return L; } diff --git a/Build/source/texk/web2c/omegafonts/yannis.test b/Build/source/texk/web2c/omegafonts/yannis.test index 7a0cf3716ad..81ad2639f57 100755 --- a/Build/source/texk/web2c/omegafonts/yannis.test +++ b/Build/source/texk/web2c/omegafonts/yannis.test @@ -15,9 +15,6 @@ echo && echo "*** pltotf arabicr yarabicr" echo && echo "*** opl2ofm arabicr.pl zyarabicr" ./omfonts -opl2ofm -verbose $srcdir/tests/arabicr.pl tests/zyarabicr || exit 1 -echo && echo "*** cmp yarabicr.tfm zyarabicr.ofm" -cmp tests/yarabicr.tfm tests/zyarabicr.ofm || exit 1 - echo && echo "*** ofm2opl yarabicr.tfm xyarabicr" ./omfonts -ofm2opl -verbose tests/yarabicr.tfm tests/xyarabicr || exit 1 @@ -28,27 +25,35 @@ echo && echo "*** diff xyarabicr.opl zyarabicr.opl" diff tests/xyarabicr.opl tests/zyarabicr.opl || exit 1 echo && echo "*** ovp2ovf arabic yarabic yarabic" -./omfonts -ovp2ovf -verbose $srcdir/tests/arabic tests/yarabic tests/yarabic || exit 77 +./omfonts -ovp2ovf -verbose $srcdir/tests/arabic tests/yarabic tests/yarabic || exit 1 -echo && echo "*** ofm2opl yarabic.tfm xyarabic" -./omfonts -ofm2opl -verbose tests/yarabic tests/xyarabic || exit 77 +echo && echo "*** ofm2opl yarabic xyarabic" +./omfonts -ofm2opl -verbose tests/yarabic tests/xyarabic || exit 1 -exit 0 -#*************************** +echo && echo "*** opl2ofm xyarabic xyarabic" +./omfonts -opl2ofm -verbose tests/xyarabic tests/xyarabic || exit 1 -diff $srcdir/tests/Cherokee.pl tests/xCherokee.pl || exit 1 +echo && echo "*** ofm2opl xyarabic yyarabic" +./omfonts -ofm2opl -verbose tests/xyarabic tests/yyarabic || exit 1 - ./omfonts -ovp2ovf -verbose $srcdir/tests/OCherokee tests/OCherokee tests/OCherokee || exit 1 +echo && echo "*** diff xyarabicr.opl yyarabicr.opl" +diff tests/xyarabic.opl tests/yyarabic.opl || exit 1 - ./omfonts -ofm2opl -verbose tests/OCherokee tests/OCherokee || exit 1 +echo && echo "*** ovf2ovp yarabic yarabic yyarabic" +./omfonts -ovf2ovp -verbose tests/yarabic tests/yarabic tests/yyarabic || exit 1 - ./omfonts -opl2ofm -verbose tests/OCherokee tests/xOCherokee || exit 1 +echo && echo "*** ovp2ovf yyarabic yyarabic yyarabic" +./omfonts -ovp2ovf -verbose tests/yyarabic tests/yyarabic tests/yyarabic || exit 1 - ./omfonts -ofm2opl -verbose tests/xOCherokee tests/xOCherokee || exit 1 +echo && echo "*** ofm2opl yyarabic xyarabic" +./omfonts -ofm2opl -verbose tests/yyarabic tests/zyarabic || exit 1 -diff tests/OCherokee.opl tests/xOCherokee.opl || exit 1 +echo && echo "*** diff xyarabicr.opl zyarabicr.opl" +diff tests/xyarabic.opl tests/zyarabic.opl || exit 1 - ./omfonts -ovf2ovp -verbose tests/OCherokee tests/OCherokee tests/xOCherokee || exit 1 +echo && echo "*** ovf2ovp yyarabic yyarabic zyarabic" +./omfonts -ovf2ovp -verbose tests/yyarabic tests/yyarabic tests/zyarabic || exit 1 -diff $srcdir/tests/OCherokee.ovp tests/xOCherokee.ovp || exit 1 +echo && echo "*** diff yyarabicr.ovp yyarabicr.ovp" +diff tests/yyarabic.ovp tests/zyarabic.ovp || exit 1 |