]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
* stringpool.c (ggc_alloc_string): Terminate string.
authorTom Tromey <tromey@redhat.com>
Fri, 3 Oct 2008 20:36:17 +0000 (20:36 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Fri, 3 Oct 2008 20:36:17 +0000 (20:36 +0000)
From-SVN: r140859

gcc/ChangeLog
gcc/stringpool.c

index 5c477137f09182222f5fdb82daba2a669ef6a267..b563a2c66081822a9873b6bbd7eee65189de9eed 100644 (file)
@@ -1,3 +1,7 @@
+2008-10-03  Tom Tromey  <tromey@redhat.com>
+
+       * stringpool.c (ggc_alloc_string): Terminate string.
+
 2008-10-03  Jakub Jelinek  <jakub@redhat.com>
 
        * gimplify.c (gimplify_function_tree): For -finstrument-functions
index 9146fbf4f7d87e6a29e2b015ad8fa6451528df3d..d8d66f2418f08799ff8c7ac97dd1c38e8913a39a 100644 (file)
@@ -18,9 +18,8 @@ You should have received a copy of the GNU General Public License
 along with GCC; see the file COPYING3.  If not see
 <http://www.gnu.org/licenses/>.  */
 
-/* String text, identifier text and identifier node allocator.  Strings
-   allocated by ggc_alloc_string are stored in an obstack which is
-   never shrunk.  Identifiers are uniquely stored in a hash table.
+/* String text, identifier text and identifier node allocator.
+   Identifiers are uniquely stored in a hash table.
 
    We use cpplib's hash table implementation.  libiberty's
    hashtab.c is not used because it requires 100% average space
@@ -76,9 +75,7 @@ alloc_node (hash_table *table ATTRIBUTE_UNUSED)
 
 /* Allocate and return a string constant of length LENGTH, containing
    CONTENTS.  If LENGTH is -1, CONTENTS is assumed to be a
-   nul-terminated string, and the length is calculated using strlen.
-   If the same string constant has been allocated before, that copy is
-   returned this time too.  */
+   nul-terminated string, and the length is calculated using strlen.  */
 
 const char *
 ggc_alloc_string (const char *contents, int length)
@@ -94,7 +91,8 @@ ggc_alloc_string (const char *contents, int length)
     return digit_string (contents[0] - '0');
 
   result = GGC_NEWVAR (char, length + 1);
-  memcpy (result, contents, length + 1);
+  memcpy (result, contents, length);
+  result[length] = '\0';
   return (const char *) result;
 }