diff --git a/source/texk/web2c/luatexdir/ChangeLog b/source/texk/web2c/luatexdir/ChangeLog
index 8a0a4abc05147db03f3e382b2bd79c86ac322609..73a9e7f98e4f7e1cd0fca6bcbdaa114a99e32cd0 100644
--- a/source/texk/web2c/luatexdir/ChangeLog
+++ b/source/texk/web2c/luatexdir/ChangeLog
@@ -1,3 +1,6 @@
+2022-12-03  Luigi Scarso <luigi.scarso@gmail.com> 
+    * Track last node in ligature handling (M.Krüger)
+
 2022-12-03  Luigi Scarso <luigi.scarso@gmail.com> 
     * Make disc node prev. pointers more uniform (M.Krüger)
 
diff --git a/source/texk/web2c/luatexdir/font/luafont.c b/source/texk/web2c/luatexdir/font/luafont.c
index 2e08facb1d973eff06698b1f8dd8909b524ea00a..c33037244a6dc16e0c5c23ee94e94fb7e3c51b19 100644
--- a/source/texk/web2c/luatexdir/font/luafont.c
+++ b/source/texk/web2c/luatexdir/font/luafont.c
@@ -2242,6 +2242,7 @@ static halfword handle_lig_nest(halfword root, halfword cur)
 static halfword handle_lig_word(halfword cur)
 {
     halfword right = null;
+    halfword last = null;
     if (type(cur) == boundary_node) {
         halfword prev = alink(cur);
         halfword fwd = vlink(cur);
@@ -2481,9 +2482,10 @@ static halfword handle_lig_word(halfword cur)
 
         } else {
             /*tex We have glyph nor disc. */
-            return cur;
+            return last;
         }
         /*tex Goto the next node, where |\par| allows |vlink(cur)| to be NULL. */
+        last = cur;
         cur = vlink(cur);
     }
     return cur;
diff --git a/source/texk/web2c/luatexdir/luatex_svnversion.h b/source/texk/web2c/luatexdir/luatex_svnversion.h
index 7cf200932632ef3d61138821864728197da0074a..162a40a9b6c1e77066b9f6f32d648e9163e84d7e 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 7551
+#define luatex_svn_revision 7552
 #endif