aboutsummaryrefslogtreecommitdiff
path: root/libiberty
diff options
context:
space:
mode:
authorKaveh R. Ghazi <ghazi@caip.rutgers.edu>2001-09-24 22:38:22 +0000
committerKaveh Ghazi <ghazi@gcc.gnu.org>2001-09-24 22:38:22 +0000
commitad43d46f3abe6f4d9b41f5b1d7b46a0c320efda8 (patch)
tree7ec3b888341991cdf8a157f5d87a6dea617363e5 /libiberty
parentb6fc711089add2bbefb23eecea0eccb3423e9960 (diff)
downloadgcc-ad43d46f3abe6f4d9b41f5b1d7b46a0c320efda8.zip
gcc-ad43d46f3abe6f4d9b41f5b1d7b46a0c320efda8.tar.gz
gcc-ad43d46f3abe6f4d9b41f5b1d7b46a0c320efda8.tar.bz2
libiberty.h (reconcat): New function.
include: * libiberty.h (reconcat): New function. libiberty: * concat.c (reconcat): New function. gcc: * c-aux-info.c (affix_data_type): Use ATTRIBUTE_MALLOC. Avoid leak by passing malloc'ed pointer to reconcat, not concat. From-SVN: r45789
Diffstat (limited to 'libiberty')
-rw-r--r--libiberty/ChangeLog4
-rw-r--r--libiberty/concat.c25
2 files changed, 29 insertions, 0 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index b68c4c5..1c64116 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,7 @@
+2001-09-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
+
+ * concat.c (reconcat): New function.
+
2001-09-17 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* concat.c (vconcat_length, vconcat_copy, concat_length,
diff --git a/libiberty/concat.c b/libiberty/concat.c
index feed0df..136e8be 100644
--- a/libiberty/concat.c
+++ b/libiberty/concat.c
@@ -171,6 +171,31 @@ concat VPARAMS ((const char *first, ...))
return newstr;
}
+char *
+reconcat VPARAMS ((char *optr, const char *first, ...))
+{
+ char *newstr;
+
+ /* First compute the size of the result and get sufficient memory. */
+ VA_OPEN (args, first);
+ VA_FIXEDARG (args, char *, optr);
+ VA_FIXEDARG (args, const char *, first);
+ newstr = (char *) xmalloc (vconcat_length (first, args) + 1);
+ VA_CLOSE (args);
+
+ /* Now copy the individual pieces to the result string. */
+ VA_OPEN (args, first);
+ VA_FIXEDARG (args, char *, optr);
+ VA_FIXEDARG (args, const char *, first);
+ vconcat_copy (newstr, first, args);
+ VA_CLOSE (args);
+
+ if (optr)
+ free (optr);
+
+ return newstr;
+}
+
#ifdef MAIN
#define NULLP (char *)0