From 0bf0b1bba1e5d59b118cf9239ce316249de15f93 Mon Sep 17 00:00:00 2001
From: Luigi Scarso <luigi.scarso@gmail.com>
Date: Wed, 22 Feb 2023 10:48:03 +0100
Subject: [PATCH] fix latelua data reference (side effect of deferred late
 additions) (H.Hagen)

---
 source/texk/web2c/luatexdir/ChangeLog           |  3 +++
 source/texk/web2c/luatexdir/lua/luastuff.c      |  2 +-
 source/texk/web2c/luatexdir/luatex_svnversion.h |  2 +-
 source/texk/web2c/luatexdir/tex/texnodes.c      | 10 ++++++----
 4 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/source/texk/web2c/luatexdir/ChangeLog b/source/texk/web2c/luatexdir/ChangeLog
index ba163208a..868f64cc3 100644
--- a/source/texk/web2c/luatexdir/ChangeLog
+++ b/source/texk/web2c/luatexdir/ChangeLog
@@ -1,3 +1,6 @@
+2023-02-22  Luigi Scarso <luigi.scarso@gmail.com> 
+    *  fix latelua data reference (side effect of deferred late additions) (H.Hagen)
+
 2023-02-18  Luigi Scarso <luigi.scarso@gmail.com> 
     * Fixed the "Invalid unicode ranges in CMap beginbfrange operator bug" as in pdfTeX (Hàn Thế Thành)
 
diff --git a/source/texk/web2c/luatexdir/lua/luastuff.c b/source/texk/web2c/luatexdir/lua/luastuff.c
index feb6a88c8..4176431ed 100644
--- a/source/texk/web2c/luatexdir/lua/luastuff.c
+++ b/source/texk/web2c/luatexdir/lua/luastuff.c
@@ -600,7 +600,7 @@ void late_lua(PDF pdf, halfword p)
     t = late_lua_type(p);
     if (t == normal) {
         /*tex sets |def_ref| */
-        expand_macros_in_tokenlist(p);
+        expand_macros_in_tokenlist(late_lua_data(p));
         luacall(def_ref, late_lua_name(p), false, p);
         flush_list(def_ref);
     } else if (t == lua_refid_call) {
diff --git a/source/texk/web2c/luatexdir/luatex_svnversion.h b/source/texk/web2c/luatexdir/luatex_svnversion.h
index 2866c4fa2..9bca73d52 100644
--- a/source/texk/web2c/luatexdir/luatex_svnversion.h
+++ b/source/texk/web2c/luatexdir/luatex_svnversion.h
@@ -1,4 +1,4 @@
 #ifndef luatex_svn_revision_h
 #define luatex_svn_revision_h
-#define luatex_svn_revision 7561
+#define luatex_svn_revision 7562
 #endif
diff --git a/source/texk/web2c/luatexdir/tex/texnodes.c b/source/texk/web2c/luatexdir/tex/texnodes.c
index 76da864e5..6e0ae1ff8 100644
--- a/source/texk/web2c/luatexdir/tex/texnodes.c
+++ b/source/texk/web2c/luatexdir/tex/texnodes.c
@@ -2201,13 +2201,15 @@ static void flush_node_wrapup_core(halfword p)
 {
     switch (subtype(p)) {
         case open_node:
-        case write_node:
         case close_node:
         case save_pos_node:
             break;
+        case write_node:
+            /* Not similar to elsewhere, already flushed? */
+            break;
         case special_node:
         case late_special_node:
-            delete_token_ref(write_tokens(p));
+            delete_token_ref(special_tokens(p));
             break;
         case late_lua_node:
             free_late_lua(p);
@@ -3482,11 +3484,11 @@ static void show_node_wrapup_core(int p)
             break;
         case special_node:
             tprint_esc("special");
-            print_mark(write_tokens(p));
+            print_mark(special_tokens(p));
             break;
         case late_special_node:
             tprint_esc("latespecial");
-            print_mark(write_tokens(p));
+            print_mark(late_lua_data(p));
             break;
         case late_lua_node:
             show_late_lua(p);
-- 
GitLab