summaryrefslogtreecommitdiff
path: root/Build/source/texk/web2c/omegaware/ovf2ovp.ch
diff options
context:
space:
mode:
authorPeter Breitenlohner <peb@mppmu.mpg.de>2009-09-23 10:08:04 +0000
committerPeter Breitenlohner <peb@mppmu.mpg.de>2009-09-23 10:08:04 +0000
commitc61273a98b45bc285d4003a0fb7f25a7266836ac (patch)
treec246aa697900f5b78a08072ce90b8201b42c0749 /Build/source/texk/web2c/omegaware/ovf2ovp.ch
parent501c21503991e727adce74448dde352b807ef01e (diff)
more texk/web2c/omegaware bugfixes for ofm2opl&Co
git-svn-id: svn://tug.org/texlive/trunk@15432 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/web2c/omegaware/ovf2ovp.ch')
-rw-r--r--Build/source/texk/web2c/omegaware/ovf2ovp.ch23
1 files changed, 13 insertions, 10 deletions
diff --git a/Build/source/texk/web2c/omegaware/ovf2ovp.ch b/Build/source/texk/web2c/omegaware/ovf2ovp.ch
index 9bc7054d2b8..2e40680f093 100644
--- a/Build/source/texk/web2c/omegaware/ovf2ovp.ch
+++ b/Build/source/texk/web2c/omegaware/ovf2ovp.ch
@@ -385,18 +385,19 @@ lig_f:=lig_z[h];
@<Cases of \.{DVI} instructions that can appear in character packets@>@;
@y
o:=vf[vf_ptr]; incr(vf_ptr);
- if ((o<=set_char_0+127))or
- ((o>=set1)and(o<=set1+3))or((o>=put1)and(o<=put1+3)) then
+ if (o<=set1+3)or((o>=put1)and(o<=put1+3)) then
begin if o>=set1 then
if o>=put1 then c:=get_bytes(o-put1+1,false)
else c:=get_bytes(o-set1+1,false)
else c:=o;
- if f=font_ptr then
+ if (c<0)or(c>65535) then
+ bad_vf('Character ',c:1,' is out of range and will be ignored')
+ else if f=font_ptr then
bad_vf('Character ',c:1,' in undeclared font will be ignored')
@.Character...will be ignored@>
- else begin vf[font_start[f+1]-1]:=c; {store |c| in the ``hole'' we left}
- k:=font_chars[f];@+while vf[k]<>c do incr(k);
- if k=font_start[f+1]-1 then
+ else begin vc[font_chars[f+1]-1]:=c; {store |c| in the ``hole'' we left}
+ k:=font_chars[f];@+while vc[k]<>c do incr(k);
+ if k=font_chars[f+1]-1 then
bad_vf('Character ',c:1,' in font ',f:1,' will be ignored')
else begin if o>=put1 then out('(PUSH)');
left; out('SETCHAR'); out_char(c);
@@ -431,12 +432,14 @@ sixty_four_cases(set_char_0),sixty_four_cases(set_char_0+64),
if o>=put1 then c:=get_bytes(o-put1+1,false)
else c:=get_bytes(o-set1+1,false)
else c:=o;
- if f=font_ptr then
+ if (c<0)or(c>65535) then
+ bad_vf('Character ',c:1,' is out of range and will be ignored')
+ else if f=font_ptr then
bad_vf('Character ',c:1,' in undeclared font will be ignored')
@.Character...will be ignored@>
- else begin vf[font_start[f+1]-1]:=c; {store |c| in the ``hole'' we left}
- k:=font_chars[f];@+while vf[k]<>c do incr(k);
- if k=font_start[f+1]-1 then
+ else begin vc[font_chars[f+1]-1]:=c; {store |c| in the ``hole'' we left}
+ k:=font_chars[f];@+while vc[k]<>c do incr(k);
+ if k=font_chars[f+1]-1 then
bad_vf('Character ',c:1,' in font ',f:1,' will be ignored')
else begin if o>=put1 then out('(PUSH)');
left; out('SETCHAR'); out_char(c);