[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[8102] parsetexi deal with extra string allocation
From: |
gavinsmith0123 |
Subject: |
[8102] parsetexi deal with extra string allocation |
Date: |
Sat, 18 Aug 2018 07:02:26 -0400 (EDT) |
Revision: 8102
http://svn.sv.gnu.org/viewvc/?view=rev&root=texinfo&revision=8102
Author: gavin
Date: 2018-08-18 07:02:26 -0400 (Sat, 18 Aug 2018)
Log Message:
-----------
parsetexi deal with extra string allocation
Modified Paths:
--------------
trunk/tp/Texinfo/XS/parsetexi/def.c
trunk/tp/Texinfo/XS/parsetexi/end_line.c
trunk/tp/Texinfo/XS/parsetexi/extra.c
trunk/tp/Texinfo/XS/parsetexi/handle_commands.c
trunk/tp/Texinfo/XS/parsetexi/parser.c
trunk/tp/Texinfo/XS/parsetexi/parser.h
trunk/tp/Texinfo/XS/parsetexi/separator.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 08:56:52 UTC (rev 8101)
+++ trunk/tp/Texinfo/XS/parsetexi/def.c 2018-08-18 11:02:26 UTC (rev 8102)
@@ -313,8 +313,8 @@
if (global_documentlanguage && *global_documentlanguage)
{
e1->type = ET_untranslated;
- add_extra_string (e1, "documentlanguage",
- global_documentlanguage);
+ add_extra_string_dup (e1, "documentlanguage",
+ global_documentlanguage);
}
e1->parent_type = route_not_in_tree;
Modified: trunk/tp/Texinfo/XS/parsetexi/end_line.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/end_line.c 2018-08-18 08:56:52 UTC (rev
8101)
+++ trunk/tp/Texinfo/XS/parsetexi/end_line.c 2018-08-18 11:02:26 UTC (rev
8102)
@@ -1217,7 +1217,7 @@
&& !*(g->text.text
+ strspn (g->text.text, "0123456789"))))
{
- spec = strdup (g->text.text);
+ spec = g->text.text;
}
else
command_error (current, "bad argument to @%s",
@@ -1224,7 +1224,7 @@
command_name(current->cmd));
}
}
- add_extra_string (current, "enumerate_specification", spec);
+ add_extra_string_dup (current, "enumerate_specification", spec);
}
else if (item_line_command (current->cmd)) // 3002
{
@@ -1438,8 +1438,6 @@
text = convert_to_text (trimmed, &superfluous_arg);
}
- if (!text)
- text = "";
destroy_element (trimmed);
if (!text || !strcmp (text, ""))
@@ -1447,6 +1445,7 @@
if (!superfluous_arg)
line_warn ("@%s missing argument", command_name(cmd)); // 3123
add_extra_integer (current, "missing_argument", 1);
+ free (text);
}
else
{
@@ -1557,8 +1556,8 @@
else if (current->cmd == CM_verbatiminclude)
{
if (global_info.input_perl_encoding)
- add_extra_string (current, "input_perl_encoding",
- global_info.input_perl_encoding);
+ add_extra_string_dup (current, "input_perl_encoding",
+ global_info.input_perl_encoding);
}
else if (current->cmd == CM_documentencoding) // 3190
{
@@ -1642,8 +1641,8 @@
break;
}
}
- add_extra_string (current, "input_perl_encoding",
- perl_encoding);
+ add_extra_string_dup (current, "input_perl_encoding",
+ perl_encoding);
global_info.input_perl_encoding = perl_encoding;
}
else
@@ -1694,8 +1693,8 @@
}
if (input_encoding)
{
- add_extra_string (current, "input_encoding_name",
- input_encoding);
+ add_extra_string_dup (current, "input_encoding_name",
+ input_encoding);
global_info.input_encoding_name = input_encoding; // 3210
set_input_encoding (input_encoding);
@@ -1748,7 +1747,7 @@
}
}
- global_documentlanguage = text;
+ global_documentlanguage = strdup (text);
/* TODO: check customization variable */
}
}
@@ -1961,7 +1960,7 @@
add_extra_string (current, "max_columns", s);
}
else
- add_extra_string (current, "max_columns", "0");
+ add_extra_string_dup (current, "max_columns", "0");
before_item = new_element (ET_before_item);
add_to_element_contents (current, before_item);
@@ -2299,8 +2298,8 @@
|| def_command == CM_deftypeivar
|| def_command == CM_deftypecv))
{
- add_extra_string (current->parent, "documentlanguage",
- global_documentlanguage);
+ add_extra_string_dup (current->parent, "documentlanguage",
+ global_documentlanguage);
}
else
{
Modified: trunk/tp/Texinfo/XS/parsetexi/extra.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/extra.c 2018-08-18 08:56:52 UTC (rev
8101)
+++ trunk/tp/Texinfo/XS/parsetexi/extra.c 2018-08-18 11:02:26 UTC (rev
8102)
@@ -122,6 +122,12 @@
}
void
+add_extra_string_dup (ELEMENT *e, char *key, char *value)
+{
+ add_extra_key (e, key, (ELEMENT *) strdup (value), extra_string);
+}
+
+void
add_extra_integer (ELEMENT *e, char *key, int value)
{
add_extra_key (e, key, (ELEMENT *) value, extra_integer);
Modified: trunk/tp/Texinfo/XS/parsetexi/handle_commands.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/handle_commands.c 2018-08-18 08:56:52 UTC
(rev 8101)
+++ trunk/tp/Texinfo/XS/parsetexi/handle_commands.c 2018-08-18 11:02:26 UTC
(rev 8102)
@@ -1024,9 +1024,9 @@
def_line->line_nr = line_nr;
add_to_element_contents (current, def_line);
current = def_line;
- add_extra_string (current, "def_command", command_name(cmd));
- add_extra_string (current, "original_def_cmdname",
- command_name(cmd));
+ add_extra_string_dup (current, "def_command", command_name(cmd));
+ add_extra_string_dup (current, "original_def_cmdname",
+ command_name(cmd));
}
else
{
@@ -1187,7 +1187,7 @@
mark_and_warn_invalid (cmd, invalid_parent, e);
if (cmd == CM_click)
{
- add_extra_string (e, "clickstyle", global_clickstyle);
+ add_extra_string_dup (e, "clickstyle", global_clickstyle);
}
else if (cmd == CM_kbd)
{
@@ -1221,8 +1221,8 @@
INFO_ENCLOSE *ie = lookup_infoenclose (cmd);
if (ie)
{
- add_extra_string (e, "begin", ie->begin);
- add_extra_string (e, "end", ie->end);
+ add_extra_string_dup (e, "begin", ie->begin);
+ add_extra_string_dup (e, "end", ie->end);
}
e->type = ET_definfoenclose_command;
}
Modified: trunk/tp/Texinfo/XS/parsetexi/parser.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/parser.c 2018-08-18 08:56:52 UTC (rev
8101)
+++ trunk/tp/Texinfo/XS/parsetexi/parser.c 2018-08-18 11:02:26 UTC (rev
8102)
@@ -257,7 +257,8 @@
e = new_element (ET_paragraph);
if (indent)
- add_extra_string (e, indent == CM_indent ? "indent" : "noindent", "1");
+ add_extra_string_dup (e, indent == CM_indent ? "indent" : "noindent",
+ "1");
add_to_element_contents (current, e);
current = e;
@@ -503,8 +504,8 @@
if (owning_keypair)
{
/* Replace element reference with a simple string. */
- add_extra_string (owning_element, "spaces_before_argument",
- owning_keypair->value->text.text);
+ add_extra_string_dup (owning_element, "spaces_before_argument",
+ owning_keypair->value->text.text);
owning_keypair->key = "";
owning_keypair->value = 0;
@@ -729,7 +730,8 @@
command_name(command),
command_name(invalid_parent));
if (marked_as_invalid_command)
- add_extra_string (marked_as_invalid_command, "invalid_nesting", "1");
+ add_extra_string_dup (marked_as_invalid_command, "invalid_nesting",
+ "1");
}
}
Modified: trunk/tp/Texinfo/XS/parsetexi/parser.h
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/parser.h 2018-08-18 08:56:52 UTC (rev
8101)
+++ trunk/tp/Texinfo/XS/parsetexi/parser.h 2018-08-18 11:02:26 UTC (rev
8102)
@@ -112,6 +112,7 @@
void add_extra_def_args (ELEMENT *e, char *key, DEF_ARGS_EXTRA *value);
void add_extra_float_type (ELEMENT *e, char *key, EXTRA_FLOAT_TYPE *value);
void add_extra_string (ELEMENT *e, char *key, char *value);
+void add_extra_string_dup (ELEMENT *e, char *key, char *value);
KEY_PAIR *lookup_extra_key (ELEMENT *e, char *key);
/* In menus.c */
Modified: trunk/tp/Texinfo/XS/parsetexi/separator.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/separator.c 2018-08-18 08:56:52 UTC (rev
8101)
+++ trunk/tp/Texinfo/XS/parsetexi/separator.c 2018-08-18 11:02:26 UTC (rev
8102)
@@ -421,8 +421,8 @@
line_error ("@image missing filename argument");
}
if (global_info.input_perl_encoding)
- add_extra_string (image, "input_perl_encoding",
- global_info.input_perl_encoding);
+ add_extra_string_dup (image, "input_perl_encoding",
+ global_info.input_perl_encoding);
}
else if (closed_command == CM_dotless)
{
@@ -560,8 +560,8 @@
& CF_index_entry_command))
{
index_elt = current->parent->parent->parent;
- add_extra_string (index_elt, "sortas",
- e->text.text);
+ add_extra_string_dup (index_elt, "sortas",
+ e->text.text);
}
}
}
@@ -734,7 +734,7 @@
else
expandp = 0;
- add_extra_string (current, "format", inline_type);
+ add_extra_string_dup (current, "format", inline_type);
/* Skip first argument for a false @inlinefmtifelse */
if (!expandp && current->cmd == CM_inlinefmtifelse)
Modified: trunk/tp/Texinfo/XS/parsetexi/tree.c
===================================================================
--- trunk/tp/Texinfo/XS/parsetexi/tree.c 2018-08-18 08:56:52 UTC (rev
8101)
+++ trunk/tp/Texinfo/XS/parsetexi/tree.c 2018-08-18 11:02:26 UTC (rev
8102)
@@ -60,6 +60,9 @@
{
switch (e->extra[i].type)
{
+ case extra_string:
+ free (e->extra[i].value);
+ break;
default:
/* TODO: need to check if the element is in the main tree or not. */
break;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [8102] parsetexi deal with extra string allocation,
gavinsmith0123 <=