texinfo-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[7079] parsetexi update


From: Gavin D. Smith
Subject: [7079] parsetexi update
Date: Mon, 28 Mar 2016 14:09:38 +0000

Revision: 7079
          http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=7079
Author:   gavin
Date:     2016-03-28 14:09:37 +0000 (Mon, 28 Mar 2016)
Log Message:
-----------
parsetexi update

Modified Paths:
--------------
    trunk/tp/parsetexi/api.c
    trunk/tp/parsetexi/parser.c

Modified: trunk/tp/parsetexi/api.c
===================================================================
--- trunk/tp/parsetexi/api.c    2016-03-28 13:46:44 UTC (rev 7078)
+++ trunk/tp/parsetexi/api.c    2016-03-28 14:09:37 UTC (rev 7079)
@@ -295,9 +295,8 @@
     {
       HV *extra;
       int i;
+      int all_deleted = 1;
       extra = newHV ();
-      hv_store (e->hv, "extra", strlen ("extra"),
-                newRV_inc((SV *)extra), 0);
 
       for (i = 0; i < e->extra_number; i++)
         {
@@ -307,6 +306,7 @@
 
           if (e->extra[i].type == extra_deleted)
             continue;
+          all_deleted = 0;
 
           switch (e->extra[i].type)
             {
@@ -484,6 +484,10 @@
             }
         }
 #undef STORE
+
+      if (!all_deleted)
+        hv_store (e->hv, "extra", strlen ("extra"),
+                  newRV_inc((SV *)extra), 0);
     }
 
   if (e->line_nr.line_nr)

Modified: trunk/tp/parsetexi/parser.c
===================================================================
--- trunk/tp/parsetexi/parser.c 2016-03-28 13:46:44 UTC (rev 7078)
+++ trunk/tp/parsetexi/parser.c 2016-03-28 14:09:37 UTC (rev 7079)
@@ -406,8 +406,7 @@
         {
           KEY_PAIR *k = 0; ELEMENT *e;
           
-          /* FIXME: does extra key get removed from current or 
-             current->parent?  */
+          /* Remove extra key from either from current or current->parent.  */
           if (current)
             k = lookup_extra_key (current, "spaces_before_argument");
           if (k && k->value == last_contents_child (current))
@@ -416,13 +415,20 @@
               k->value = 0;
               k->type = extra_deleted;
             }
+          else if (current->parent)
+            {
+              k = lookup_extra_key (current->parent, "spaces_before_argument");
+              if (k && k->value == last_contents_child (current))
+                {
+                  k->key = "";
+                  k->value = 0;
+                  k->type = extra_deleted;
+                }
+            }
 
-          /* FIXME: We can't destroy it, because it may still be
-             referred to by current->parent->extra.  This is an oversight
-             in the Perl implementation. */
           e = pop_element_from_contents (current);
           e->parent = 0; e->parent_type = route_not_in_tree;
-          //destroy_element (e);
+          destroy_element (e);
           /* TODO: Maybe we could avoid adding it in the first place? */
         }
       else if (last_child->type == ET_empty_line) //2132




reply via email to

[Prev in Thread] Current Thread [Next in Thread]