OSDN Git Service

Fix ticket #29140/
[luatex-ja/luatexja.git] / src / ltj-jfmglue.lua
index 041426e..0659fd0 100644 (file)
@@ -183,12 +183,8 @@ local function check_box(box_ptr, box_end)
    end
    while p and p~=box_end do
       local pid = p.id
-      if pid==id_kern then
-        if p.subtype==2 then
-           p = node_next(node_next(node_next(p))); pid = p.id
-        elseif has_attr(p, attr_icflag)==IC_PROCESSED then
-           p = node_next(p); pid = p.id
-        end
+      if pid==id_kern and p.subtype==2 then
+           p = node_next(node_next(node_next(p))); pid = p.id -- p must be glyph_node
       end
       if pid==id_glyph then
         repeat 
@@ -198,9 +194,11 @@ local function check_box(box_ptr, box_end)
            last_char = p; found_visible_node = true; p=node_next(p)
            if (not p) or p==box_end then return found_visible_node end
         until p.id~=id_glyph
-        pid = p.id
+        pid = p.id -- p must be non-nil
       end
-      if pid==id_hlist then
+      if pid==id_kern and has_attr(p, attr_icflag)==IC_PROCESSED then
+        p = node_next(p); 
+      elseif pid==id_hlist then
         if has_attr(p, attr_icflag)==PACKED then
            for q in node.traverse_id(id_glyph, p.head) do
               if find_first_char then
@@ -1000,8 +998,8 @@ function create_beginpar_node()
 end
 
 local function whatsit_callback(Np, lp, Nq, bsl)
-   if Np.nuc then return Np 
-   elseif lp.user_id == 30114 then
+   if Np and Np.nuc then return Np 
+   elseif Np and lp.user_id == 30114 then
       Np.first = lp; Np.nuc = lp; Np.last = lp
       Np.char = 'parbdd'
       Np.met = nil