This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[patch] parse.c (namecopy, namecopy_size): Move into copy_name.
- From: dje at google dot com (Doug Evans)
- To: gdb-patches at sourceware dot org
- Date: Tue, 27 Dec 2011 16:34:59 -0800 (PST)
- Subject: [patch] parse.c (namecopy, namecopy_size): Move into copy_name.
Hi.
A simple cleanup.
I will check this in in a few days if there are no objections.
2011-12-27 Doug Evans <dje@google.com>
* parser-defs.h (namecopy): Delete.
* parse.c (namecopy, namecopy_size): Move into copy_name.
Index: parser-defs.h
===================================================================
RCS file: /cvs/src/src/gdb/parser-defs.h,v
retrieving revision 1.40
diff -u -p -r1.40 parser-defs.h
--- parser-defs.h 16 Sep 2011 14:36:55 -0000 1.40
+++ parser-defs.h 28 Dec 2011 00:29:33 -0000
@@ -217,17 +217,6 @@ extern char *lexptr;
Currently used only for error reporting. */
extern char *prev_lexptr;
-/* Tokens that refer to names do so with explicit pointer and length,
- so they can share the storage that lexptr is parsing.
-
- When it is necessary to pass a name to a function that expects
- a null-terminated string, the substring is copied out
- into a block of storage that namecopy points to.
-
- namecopy is allocated once, guaranteed big enough, for each parsing. */
-
-extern char *namecopy;
-
/* Current depth in parentheses within the expression. */
extern int paren_depth;
Index: parse.c
===================================================================
RCS file: /cvs/src/src/gdb/parse.c,v
retrieving revision 1.112
diff -u -p -r1.112 parse.c
--- parse.c 9 Oct 2011 19:41:16 -0000 1.112
+++ parse.c 28 Dec 2011 00:34:20 -0000
@@ -91,16 +91,6 @@ int in_parse_field;
'->'. This is set when parsing and is only used when completing a
field name. It is -1 if no dereference operation was found. */
static int expout_last_struct = -1;
-
-/* A temporary buffer for identifiers, so we can null-terminate them.
-
- We allocate this with xrealloc. parse_exp_1 used to allocate with
- alloca, using the size of the whole expression as a conservative
- estimate of the space needed. However, macro expansion can
- introduce names longer than the original expression; there's no
- practical way to know beforehand how large that might be. */
-char *namecopy;
-size_t namecopy_size;
static int expressiondebug = 0;
static void
@@ -745,13 +735,28 @@ find_template_name_end (char *p)
}
+/* Return a null-terminated temporary copy of the name of a string token.
-/* Return a null-terminated temporary copy of the name
- of a string token. */
+ Tokens that refer to names do so with explicit pointer and length,
+ so they can share the storage that lexptr is parsing.
+ When it is necessary to pass a name to a function that expects
+ a null-terminated string, the substring is copied out
+ into a separate block of storage.
+
+ N.B. A single buffer is reused on each call. */
char *
copy_name (struct stoken token)
{
+ /* A temporary buffer for identifiers, so we can null-terminate them.
+ We allocate this with xrealloc. parse_exp_1 used to allocate with
+ alloca, using the size of the whole expression as a conservative
+ estimate of the space needed. However, macro expansion can
+ introduce names longer than the original expression; there's no
+ practical way to know beforehand how large that might be. */
+ static char *namecopy;
+ static size_t namecopy_size;
+
/* Make sure there's enough space for the token. */
if (namecopy_size < token.length + 1)
{