summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Build/source/texk/web2c/xetexdir/ChangeLog5
-rw-r--r--Build/source/texk/web2c/xetexdir/xetex.web6
2 files changed, 8 insertions, 3 deletions
diff --git a/Build/source/texk/web2c/xetexdir/ChangeLog b/Build/source/texk/web2c/xetexdir/ChangeLog
index 31ec9dd83f1..152ec64154b 100644
--- a/Build/source/texk/web2c/xetexdir/ChangeLog
+++ b/Build/source/texk/web2c/xetexdir/ChangeLog
@@ -1,3 +1,8 @@
+2020-02-23 Clerk Ma <maqiyuan130324@vip.qq.com>
+
+ * xetex.web: Fix a potential bug in the primitive
+ \XeTeXinterchartoks.
+
2020-02-22 Clerk Ma <maqiyuan130324@vip.qq.com>
* xetex.web: Fix a bug in the primitive \pdfsavepos.
diff --git a/Build/source/texk/web2c/xetexdir/xetex.web b/Build/source/texk/web2c/xetexdir/xetex.web
index 842f88eccff..ab02d793ffb 100644
--- a/Build/source/texk/web2c/xetexdir/xetex.web
+++ b/Build/source/texk/web2c/xetexdir/xetex.web
@@ -24188,7 +24188,7 @@ are inside the individual sections.
if prev_class = char_class_boundary then begin {boundary}
if (state<>token_list) or (token_type<>backed_up_char) then begin
find_sa_element(inter_char_val, char_class_boundary*char_class_limit + space_class, false);
- if cur_ptr<>null then begin
+ if (cur_ptr<>null) and (sa_ptr(cur_ptr)<>null) then begin
if cur_cmd<>letter then cur_cmd:=other_char;
cur_tok:=(cur_cmd*max_char_val)+cur_chr;
back_input; token_type:=backed_up_char;
@@ -24198,7 +24198,7 @@ are inside the individual sections.
end
end else begin
find_sa_element(inter_char_val, prev_class*char_class_limit + space_class, false);
- if cur_ptr<>null then begin
+ if (cur_ptr<>null) and (sa_ptr(cur_ptr)<>null) then begin
if cur_cmd<>letter then cur_cmd:=other_char;
cur_tok:=(cur_cmd*max_char_val)+cur_chr;
back_input; token_type:=backed_up_char;
@@ -24214,7 +24214,7 @@ are inside the individual sections.
if XeTeX_inter_char_tokens_en and (space_class<>char_class_ignored) and (prev_class<>char_class_boundary) then begin
prev_class:=char_class_boundary;
find_sa_element(inter_char_val, space_class*char_class_limit + char_class_boundary, false); {boundary}
- if cur_ptr<>null then begin
+ if (cur_ptr<>null) and (sa_ptr(cur_ptr)<>null) then begin
if cur_cs=0 then begin
if cur_cmd=char_num then cur_cmd:=other_char;
cur_tok:=(cur_cmd*max_char_val)+cur_chr;