texlive[45386] Build/source/texk/web2c/eptexdir: eptexdir: fix
commits+hironobu at tug.org
commits+hironobu at tug.org
Sun Sep 24 00:07:26 CEST 2017
Revision: 45386
http://tug.org/svn/texlive?view=revision&revision=45386
Author: hironobu
Date: 2017-09-24 00:07:26 +0200 (Sun, 24 Sep 2017)
Log Message:
-----------
eptexdir: fix \[if]pdfprimitive (version 170924 by H. Kitagawa)
Modified Paths:
--------------
trunk/Build/source/texk/web2c/eptexdir/ChangeLog
trunk/Build/source/texk/web2c/eptexdir/eptex.ech
trunk/Build/source/texk/web2c/eptexdir/pdfutils.ch
Modified: trunk/Build/source/texk/web2c/eptexdir/ChangeLog
===================================================================
--- trunk/Build/source/texk/web2c/eptexdir/ChangeLog 2017-09-23 00:21:58 UTC (rev 45385)
+++ trunk/Build/source/texk/web2c/eptexdir/ChangeLog 2017-09-23 22:07:26 UTC (rev 45386)
@@ -1,3 +1,8 @@
+2017-09-24 Hironori Kitagawa <h_kitagawa2001 at yahoo.co.jp>
+
+ * pdfutils.ch: Avoid overwriting prim_* entries by primitive().
+ * eptex.ech: Change version to 170924.
+
2017-09-09 Hironori Kitagawa <h_kitagawa2001 at yahoo.co.jp>
and Noriyuki Abe <abenori at math.sci.hokudai.ac.jp>
Modified: trunk/Build/source/texk/web2c/eptexdir/eptex.ech
===================================================================
--- trunk/Build/source/texk/web2c/eptexdir/eptex.ech 2017-09-23 00:21:58 UTC (rev 45385)
+++ trunk/Build/source/texk/web2c/eptexdir/eptex.ech 2017-09-23 22:07:26 UTC (rev 45386)
@@ -19,7 +19,7 @@
@y
@d eTeX_version_string=='-2.6' {current \eTeX\ version}
@#
- at d epTeX_version_string=='-161114'
+ at d epTeX_version_string=='-170924'
@z
@x e-pTeX: banner
Modified: trunk/Build/source/texk/web2c/eptexdir/pdfutils.ch
===================================================================
--- trunk/Build/source/texk/web2c/eptexdir/pdfutils.ch 2017-09-23 00:21:58 UTC (rev 45385)
+++ trunk/Build/source/texk/web2c/eptexdir/pdfutils.ch 2017-09-23 22:07:26 UTC (rev 45386)
@@ -20,9 +20,9 @@
%%
%% \pdfprimitive and \ifpdfprimitive: for LaTeX3 (2015/07/15)
%%
-%% \pdfuniformdeviate and co.:
+%% \pdfuniformdeviate and co.:
%% (\pdfnormaldeviate, \pdfrandomseed, \pdfsetrandomseed)
-%%
+%%
%% \pdfelapsedtime and \pdfresettimer
%%
@@ -449,7 +449,7 @@
@d prim_prime=1777 {about 85\pct! of |primitive_size|}
@d prim_base=1
@d prim_next(#) == prim[#].lh {link for coalesced lists}
- at d prim_text(#) == prim[#].rh {string number for control sequence name}
+ at d prim_text(#) == prim[#].rh {string number for control sequence name, plus one}
@d prim_is_full == (prim_used=prim_base) {test if all positions are occupied}
@d prim_eq_level_field(#)==#.hh.b1
@d prim_eq_type_field(#)==#.hh.b0
@@ -458,6 +458,7 @@
@d prim_eq_type(#)==prim_eq_type_field(prim_eqtb[#]) {command code for equivalent}
@d prim_equiv(#)==prim_equiv_field(prim_eqtb[#]) {equivalent value}
@d undefined_primitive=0
+ at d biggest_char=255 { 65535 in XeTeX }
@<Glob...@>=
@!prim: array [0..prim_size] of two_halves; {the primitives table}
@@ -505,27 +506,30 @@
@!k:pointer; {index in string pool}
@!j,@!l:integer;
begin
-if s<256 then begin
- p := s;
- if (p<0) or (prim_eq_level(p)<>level_one) then
- p := undefined_primitive;
-end
+if s<=biggest_char then begin
+ if s<0 then begin p:=undefined_primitive; goto found; end
+ else p:=(s mod prim_prime)+prim_base; {we start searching here}
+ end
else begin
j:=str_start[s];
if s = str_ptr then l := cur_length else l := length(s);
@<Compute the primitive code |h|@>;
- p:=h+prim_base; {we start searching here; note that |0<=h<hash_prime|}
- loop at +begin if prim_text(p)>0 then if length(prim_text(p))=l then
- if str_eq_str(prim_text(p),s) then goto found;
- if prim_next(p)=0 then
- begin if no_new_control_sequence then
- p:=undefined_primitive
- else @<Insert a new primitive after |p|, then make
- |p| point to it@>;
- goto found;
- end;
- p:=prim_next(p);
+ p:=h+prim_base; {we start searching here; note that |0<=h<prim_prime|}
+ end;
+loop at +begin
+ if prim_text(p)>1+biggest_char then { |p| points a multi-letter primitive }
+ begin if length(prim_text(p)-1)=l then
+ if str_eq_str(prim_text(p)-1,s) then goto found;
+ end
+ else if prim_text(p)=1+s then goto found; { |p| points a single-letter primitive }
+ if prim_next(p)=0 then
+ begin if no_new_control_sequence then
+ p:=undefined_primitive
+ else @<Insert a new primitive after |p|, then make
+ |p| point to it@>;
+ goto found;
end;
+ p:=prim_next(p);
end;
found: prim_lookup:=p;
end;
@@ -538,7 +542,7 @@
until prim_text(prim_used)=0; {search for an empty location in |prim|}
prim_next(p):=prim_used; p:=prim_used;
end;
-prim_text(p):=s;
+prim_text(p):=s+1;
end
@ The value of |prim_prime| should be roughly 85\pct! of
@@ -569,7 +573,7 @@
@y
begin if s<256 then begin
cur_val:=s+single_base;
- prim_val:=s;
+ prim_val:=prim_lookup(s);
end
@z
@@ -649,7 +653,7 @@
begin save_scanner_status := scanner_status; scanner_status:=normal;
get_token; scanner_status:=save_scanner_status;
if cur_cs < hash_base then
- cur_cs := prim_lookup(cur_cs-257)
+ cur_cs := prim_lookup(cur_cs-single_base)
else
cur_cs := prim_lookup(text(cur_cs));
if cur_cs<>undefined_primitive then begin
@@ -996,7 +1000,7 @@
get_next;
scanner_status:=save_scanner_status;
if cur_cs < hash_base then
- m := prim_lookup(cur_cs-257)
+ m := prim_lookup(cur_cs-single_base)
else
m := prim_lookup(text(cur_cs));
b :=((cur_cmd<>undefined_cs) and
@@ -1029,7 +1033,7 @@
get_next;
scanner_status:=t;
if cur_cs < hash_base then
- cur_cs := prim_lookup(cur_cs-257)
+ cur_cs := prim_lookup(cur_cs-single_base)
else
cur_cs := prim_lookup(text(cur_cs));
if cur_cs<>undefined_primitive then begin
More information about the tex-live-commits
mailing list