OSDN Git Service

Fix ticket #29140 in kitagawa_test branch.
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Sun, 29 Jul 2012 04:52:00 +0000 (13:52 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Sun, 29 Jul 2012 04:52:00 +0000 (13:52 +0900)
src/ltj-jfmglue.lua

index 1887b78..a3dbc25 100644 (file)
@@ -176,13 +176,9 @@ 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 IC_PROCESSED == has_attr(p, attr_icflag) then
-           p = node_next(p); pid = p.id
-        end
-      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 
            if find_first_char then 
@@ -191,9 +187,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 PACKED == has_attr(p, attr_icflag) then
            if find_first_char then
               first_char = p.head; find_first_char = false