UChar u_main[sizeof("main")];
UChar u_return[sizeof("return ")];
-UChar u_semicolon[sizeof(" ;")];
-UChar u_doublecolon[sizeof(" ;")];
+UChar u_doublecolon[sizeof("::")];
void init_unicode_strings(void)
{
u_charsToUChars("main", u_main, sizeof("main"));
u_charsToUChars("return ", u_return, sizeof("return "));
- u_charsToUChars(" ;", u_semicolon, sizeof(" ;"));
u_charsToUChars("::", u_doublecolon, sizeof("::"));
}
UChar *str = string.u;
if (retval_ptr) {
- Z_USTRLEN(pv) = u_strlen(str) + sizeof("return ;") - 1;
+ int l = u_strlen(str);
+ Z_USTRLEN(pv) = l + sizeof("return ;") - 1;
Z_USTRVAL(pv) = eumalloc(Z_USTRLEN(pv) + 1);
- u_strcpy(Z_USTRVAL(pv), u_return);
- u_strcat(Z_USTRVAL(pv), str);
- u_strcat(Z_USTRVAL(pv), u_semicolon);
+ u_memcpy(Z_USTRVAL(pv), u_return, sizeof("return ") - 1);
+ u_memcpy(Z_USTRVAL(pv) + sizeof("return ") - 1, str, l);
+ Z_USTRVAL(pv)[Z_USTRLEN(pv) - 1] = 0x3B /*';'*/;
+ Z_USTRVAL(pv)[Z_USTRLEN(pv)] = 0;
} else {
Z_USTRLEN(pv) = u_strlen(str);
Z_USTRVAL(pv) = str;
char *str = string.s;
if (retval_ptr) {
- Z_STRLEN(pv) = strlen(str)+sizeof("return ;") - 1;
+ int l = strlen(str);
+ Z_STRLEN(pv) = l + sizeof("return ;") - 1;
Z_STRVAL(pv) = emalloc(Z_STRLEN(pv) + 1);
- strcpy(Z_STRVAL(pv), "return ");
- strcat(Z_STRVAL(pv), str);
- strcat(Z_STRVAL(pv), " ;");
+ memcpy(Z_STRVAL(pv), "return ", sizeof("return ") - 1);
+ memcpy(Z_STRVAL(pv) + sizeof("return ") - 1, str, l);
+ Z_STRVAL(pv)[Z_STRLEN(pv) - 1] = ';';
+ Z_STRVAL(pv)[Z_STRLEN(pv)] = '\0';
} else {
Z_STRLEN(pv) = strlen(str);
Z_STRVAL(pv) = str;