[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[8109] parsetexi work on freeing
From: |
gavinsmith0123 |
Subject: |
[8109] parsetexi work on freeing |
Date: |
Sat, 18 Aug 2018 15:59:32 -0400 (EDT) |
Revision: 8109
http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=8109
Author: gavin
Date: 2018-08-18 15:59:31 -0400 (Sat, 18 Aug 2018)
Log Message:
-----------
parsetexi work on freeing
Modified Paths:
--------------
trunk/tp/Texinfo/XS/parsetexi/def.c
trunk/tp/Texinfo/XS/parsetexi/tree.c
Modified: trunk/tp/Texinfo/XS/parsetexi/def.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/def.c 2018-08-18 17:02:46 UTC (rev 8108)
+++ trunk/tp/Texinfo/XS/parsetexi/def.c 2018-08-18 19:59:31 UTC (rev 8109)
@@ -64,6 +64,19 @@
}
+static ELEMENT *
+shallow_copy_element (ELEMENT *e)
+{
+ ELEMENT *e2 = 0;
+ if (e)
+ {
+ e2 = malloc (sizeof (ELEMENT));
+ memcpy (e2, e, sizeof (ELEMENT));
+ e2->parent_type = route_not_in_tree;
+ }
+ return (e2);
+}
+
static void
shallow_destroy_element (ELEMENT *e)
{
@@ -231,13 +244,13 @@
d->elements[d->nelements] = 0;
}
-/* Parse the arguments on a def* command line. */
+/* Parse the arguments on a def* command line.
+ The return value is suitable for "def_args" extra value. */
// 2378
DEF_ARGS_EXTRA *
parse_def (enum command_id command, ELEMENT_LIST contents)
{
- /* The return value - suitable for "def_args" extra value. */
- DEF_ARGS_EXTRA *def_args;
+ DEF_ARGS_EXTRA *def_args; /* Return value */
int i, args_start = 0;
ELEMENT *arg_line; /* Copy of argument line. */
@@ -254,8 +267,13 @@
for (i = contents.list[0]->type != ET_empty_spaces_after_command ? 0 : 1;
i < contents.number; i++)
{
- if (contents.list[i]->text.space > 0)
+ if (0)
{
+ add_to_contents_as_array (arg_line,
+ shallow_copy_element (contents.list[i]));
+ }
+ else if (contents.list[i]->text.space > 0)
+ {
/* Copy text to avoid changing the original. */
ELEMENT *copy = new_element (ET_NONE);
copy->parent_type = route_not_in_tree;
Modified: trunk/tp/Texinfo/XS/parsetexi/tree.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/tree.c 2018-08-18 17:02:46 UTC (rev
8108)
+++ trunk/tp/Texinfo/XS/parsetexi/tree.c 2018-08-18 19:59:31 UTC (rev
8109)
@@ -127,8 +127,32 @@
free (eft);
break;
}
+ case extra_misc_args:
+ /* Same problem as above. */
+ //destroy_element_and_children (e->extra[i].value);
+ break;
+ case extra_def_args:
+ {
+ int j;
+ DEF_ARGS_EXTRA *dae = (DEF_ARGS_EXTRA *) e->extra[i].value;
+
+ /* Same problem as above. */
+ for (j = 0; 0 && j < dae->nelements; j++)
+ {
+ ELEMENT *e = dae->elements[j];
+ if (e->text.end > 0)
+ {
+ //destroy_element_and_children (dae->elements[j]);
+ destroy_element (dae->elements[j]);
+ }
+ free (dae->labels[j]);
+ }
+ free (dae->labels);
+ free (dae->elements);
+ free (dae);
+ }
+
default:
- /* TODO: need to check if the element is in the main tree or not. */
break;
}
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [8109] parsetexi work on freeing,
gavinsmith0123 <=