|
|
|
@ -20,6 +20,9 @@ define(`PROC_STRING_N_EX', `
|
|
|
|
|
STRTYPE, `zstr_uchar', `ZSTR_U($1)',
|
|
|
|
|
STRTYPE, `zstr_char', `ZSTR_S($1)',
|
|
|
|
|
`', `', `$1'))
|
|
|
|
|
pushdef(`U', ifelse(
|
|
|
|
|
PTRTYPE, `char', `',
|
|
|
|
|
PTRTYPE, `UChar', `u'))
|
|
|
|
|
if (SRCPTR == NULL) {
|
|
|
|
|
IFNOTMEMCPY(`IFCOPY(`
|
|
|
|
|
DSTPTR = NULL;
|
|
|
|
@ -55,11 +58,10 @@ define(`PROC_STRING_N_EX', `
|
|
|
|
|
fprintf(stderr, "\" len=%d\n", $3 - 1);
|
|
|
|
|
')
|
|
|
|
|
')
|
|
|
|
|
IFCALC(`xc_calc_string_n(processor, ISTYPE, SRCSTR, $3 IFASSERT(`, __LINE__'));')
|
|
|
|
|
IFSTORE(`DSTPTR = ifelse(PTRTYPE,`char',`ZSTR_S',`ZSTR_U')(xc_store_string_n(processor, ISTYPE, SRCSTR, $3 IFASSERT(`, __LINE__')));')
|
|
|
|
|
IFCALC(`xc_calc_string_n(processor, ISTYPE, ZSTR(SRCSTR), $3 IFASSERT(`, __LINE__'));')
|
|
|
|
|
IFSTORE(`DSTPTR = ifelse(PTRTYPE,`char',`ZSTR_S',`ZSTR_U')(xc_store_string_n(processor, ISTYPE, ZSTR(SRCSTR), $3 IFASSERT(`, __LINE__')));')
|
|
|
|
|
IFRESTORE(`
|
|
|
|
|
ALLOC(DSTPTR, `STRTYPE', `($3)')
|
|
|
|
|
memcpy(DSTPTR, SRCPTR, sizeof(STRTYPE) * ($3));
|
|
|
|
|
DSTPTR = e`'U`'strndup(SRCPTR, ($3) - 1);
|
|
|
|
|
')
|
|
|
|
|
FIXPOINTER_EX(`PTRTYPE', DSTPTR)
|
|
|
|
|
IFDASM(`
|
|
|
|
@ -74,6 +76,7 @@ define(`PROC_STRING_N_EX', `
|
|
|
|
|
')
|
|
|
|
|
')
|
|
|
|
|
}
|
|
|
|
|
popdef(`U')
|
|
|
|
|
popdef(`DSTPTR')
|
|
|
|
|
popdef(`SRCPTR')
|
|
|
|
|
popdef(`SRCSTR')
|
|
|
|
|