cpplex.c (cpp_token_len): Tighten up.
authorNeil Booth <neil@daikokuya.co.uk>
Thu, 24 Apr 2003 20:03:57 +0000 (20:03 +0000)
committerNeil Booth <neil@gcc.gnu.org>
Thu, 24 Apr 2003 20:03:57 +0000 (20:03 +0000)
* cpplex.c (cpp_token_len): Tighten up.
(cpp_token_as_text): Need extra byte now.
* cpplib.c (glue_header_name): Need extra 2 bytes.
* cppmacro.c (cpp_macro_definition): Need extra byte.

From-SVN: r66049

gcc/ChangeLog
gcc/cpplex.c
gcc/cpplib.c
gcc/cppmacro.c

index 1ae16b22ae7642bd6d494b8d74b2f97c61677f2a..89ba2f8d203784bda909f8f77ed56112c42bc6c0 100644 (file)
@@ -1,3 +1,10 @@
+2003-04-24  Neil Booth  <neil@daikokuya.co.uk>
+
+       * cpplex.c (cpp_token_len): Tighten up.
+       (cpp_token_as_text): Need extra byte now.
+       * cpplib.c (glue_header_name): Need extra 2 bytes.
+       * cppmacro.c (cpp_macro_definition): Need extra byte.
+
 2003-04-24  Alexander Kabaev <kan@FreeBSD.ORG>
 
        * config/sparc/sparc.md (umulsidi3, mulsidi3): Avoid using
index c9c064143c3533e5cfea2d90807c4ff0d49a69a4..4f0767e42c8eaa916340d2433ebb999fdba2018d 100644 (file)
@@ -1094,8 +1094,8 @@ _cpp_lex_direct (pfile)
   return result;
 }
 
-/* An upper bound on the number of bytes needed to spell TOKEN,
-   including preceding whitespace.  */
+/* An upper bound on the number of bytes needed to spell TOKEN.
+   Does not include preceding whitespace.  */
 unsigned int
 cpp_token_len (token)
      const cpp_token *token;
@@ -1104,12 +1104,12 @@ cpp_token_len (token)
 
   switch (TOKEN_SPELL (token))
     {
-    default:           len = 0;                                break;
+    default:           len = 4;                                break;
     case SPELL_LITERAL:        len = token->val.str.len;               break;
     case SPELL_IDENT:  len = NODE_LEN (token->val.node);       break;
     }
-  /* 1 for whitespace, 4 for comment delimiters.  */
-  return len + 5;
+
+  return len;
 }
 
 /* Write the spelling of a token TOKEN to BUFFER.  The buffer must
@@ -1167,8 +1167,8 @@ unsigned char *
 cpp_token_as_text (pfile, token)
      cpp_reader *pfile;
      const cpp_token *token;
-{
-  unsigned int len = cpp_token_len (token);
+{ 
+  unsigned int len = cpp_token_len (token) + 1;
   unsigned char *start = _cpp_unaligned_alloc (pfile, len), *end;
 
   end = cpp_spell_token (pfile, token, start);
index 9b95ac950cffd5cc07e85945ba7206b6d475609e..271aa5d487b6ac08825b800c435ac6095d68dc05 100644 (file)
@@ -594,7 +594,7 @@ glue_header_name (pfile)
          break;
        }
 
-      len = cpp_token_len (token);
+      len = cpp_token_len (token) + 2; /* Leading space, terminating \0.  */
       if (total_len + len > capacity)
        {
          capacity = (capacity + len) * 2;
index b0b10ae92d755f3e4d624a742b6c444016ab2bde..f77f6b36837430acfb303e60f3d49d09560262c1 100644 (file)
@@ -1715,7 +1715,7 @@ cpp_macro_definition (pfile, node)
          if (token->type == CPP_MACRO_ARG)
            len += NODE_LEN (macro->params[token->val.arg_no - 1]);
          else
-           len += cpp_token_len (token); /* Includes room for ' '.  */
+           len += cpp_token_len (token) + 1; /* Includes room for ' '.  */
          if (token->flags & STRINGIFY_ARG)
            len++;                      /* "#" */
          if (token->flags & PASTE_LEFT)