* parser-defs.h (namecopy): Delete.
authorDoug Evans <dje@google.com>
Mon, 9 Jan 2012 17:27:20 +0000 (17:27 +0000)
committerDoug Evans <dje@google.com>
Mon, 9 Jan 2012 17:27:20 +0000 (17:27 +0000)
* parse.c (namecopy, namecopy_size): Move into copy_name.

gdb/ChangeLog
gdb/parse.c
gdb/parser-defs.h

index 43827ed1434d0bc4899ccf8a35c6dc16fc52d0b4..64ebd3b9d4c3b8a2a5645f7b8e195e63d1d37a28 100644 (file)
@@ -1,3 +1,8 @@
+2012-01-09  Doug Evans  <dje@google.com>
+
+       * parser-defs.h (namecopy): Delete.
+       * parse.c (namecopy, namecopy_size): Move into copy_name.
+
 2012-01-09  Jan Kratochvil  <jan.kratochvil@redhat.com>
 
        Partially fix duplicate .o files after omitting libbfd.a.
index b0fa2379fd186ba67961c0f6d22bf873f9364d35..f405dc5c9eb14669d95194eefd81027545551e61 100644 (file)
@@ -90,16 +90,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;
 \f
 static int expressiondebug = 0;
 static void
@@ -744,13 +734,28 @@ find_template_name_end (char *p)
 }
 \f
 
+/* 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)
     {
index d14aea6bbeec9a3e26d2489db286b90a5316246a..16b40acf8205b3e02a915f1306785db330847cc0 100644 (file)
@@ -216,17 +216,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;