aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/builtins.c6
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6921898..b1a193a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2003-05-02 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * builtins.c (expand_builtin_stpcpy): Copy `arglist' before
+ modifying it.
+
2003-05-03 Falk Hueffner <falk.hueffner@student.uni-tuebingen.de>
Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 94db6a3..46b14bc 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -2491,13 +2491,15 @@ expand_builtin_stpcpy (arglist, target, mode)
return 0;
else
{
+ tree newarglist;
tree len = c_strlen (TREE_VALUE (TREE_CHAIN (arglist)));
if (len == 0)
return 0;
len = fold (size_binop (PLUS_EXPR, len, ssize_int (1)));
- chainon (arglist, build_tree_list (NULL_TREE, len));
- return expand_builtin_memcpy (arglist, target, mode, /*endp=*/2);
+ newarglist = copy_list (arglist);
+ chainon (newarglist, build_tree_list (NULL_TREE, len));
+ return expand_builtin_memcpy (newarglist, target, mode, /*endp=*/2);
}
}