Avoid temporary string object
diff --git a/Source/Preprocessor/cpp.c b/Source/Preprocessor/cpp.c
index 2f325d6..38d035e 100644
--- a/Source/Preprocessor/cpp.c
+++ b/Source/Preprocessor/cpp.c
@@ -289,30 +289,24 @@
String *Macro_vararg_name(const_String_or_char_ptr str, const_String_or_char_ptr line) {
- String *argname;
String *varargname;
char *s, *dots;
- argname = Copy(str);
- s = Char(argname);
+ s = Char(str);
dots = strchr(s, '.');
if (!dots) {
- Delete(argname);
return NULL;
}
if (strcmp(dots, "...") != 0) {
Swig_error(Getfile(line), Getline(line), "Illegal macro argument name '%s'\n", str);
- Delete(argname);
return NULL;
}
if (dots == s) {
varargname = NewString("__VA_ARGS__");
} else {
- *dots = '\0';
- varargname = NewString(s);
+ varargname = NewStringWithSize(s, (int)(dots - s));
}
- Delete(argname);
return varargname;
}