summaryrefslogtreecommitdiff
path: root/gcc/stringpool.c
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2008-10-03 20:36:17 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2008-10-03 20:36:17 +0000
commit83f43f3670b86f8f40506ced7c23b0bc9be3168d (patch)
treec84b1de37acf09296caed8b85de29db281b38b44 /gcc/stringpool.c
parent1597c73a20be6766acadc6e124ca5e127545f4f5 (diff)
downloadgcc-83f43f3670b86f8f40506ced7c23b0bc9be3168d.tar.gz
* stringpool.c (ggc_alloc_string): Terminate string.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@140859 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/stringpool.c')
-rw-r--r--gcc/stringpool.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/gcc/stringpool.c b/gcc/stringpool.c
index 9146fbf4f7d..d8d66f2418f 100644
--- a/gcc/stringpool.c
+++ b/gcc/stringpool.c
@@ -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;
}