optimized this further

This commit is contained in:
David Anderson 2006-02-07 09:02:08 +00:00
parent 29f46a56d9
commit 459f91af24

View File

@ -177,7 +177,7 @@ static cell AMX_NATIVE_CALL replace(AMX *amx, cell *params) /* 4 param */
cell len = params[2]; cell len = params[2];
cell *what = get_amxaddr(amx, params[3]); cell *what = get_amxaddr(amx, params[3]);
cell *with = get_amxaddr(amx, params[4]); cell *with = get_amxaddr(amx, params[4]);
cell *origtext = text; cell *textptr = text;
int withLen = amxstring_len(with); int withLen = amxstring_len(with);
int whatLen = amxstring_len(what); int whatLen = amxstring_len(what);
@ -207,13 +207,9 @@ static cell AMX_NATIVE_CALL replace(AMX *amx, cell *params) /* 4 param */
{ {
cell *saveptr = text + whatLen; cell *saveptr = text + whatLen;
cell restlen = textLen - (browsed + whatLen); cell restlen = textLen - (browsed + whatLen);
cell amx_addr, *phys_addr; textptr = text + withLen;
amx_Allot(amx, restlen + 1, &amx_addr, &phys_addr); memmove(textptr, saveptr, (restlen + 1) * sizeof(cell));
memcpy(phys_addr, saveptr, (restlen + 1) * sizeof(cell));
memcpy(text, with, withLen * sizeof(cell)); memcpy(text, with, withLen * sizeof(cell));
text += withLen;
memcpy(text, phys_addr, (restlen + 1) * sizeof(cell));
amx_Release(amx, amx_addr);
return (textLen - whatLen + withLen); return (textLen - whatLen + withLen);
} }
} }