Make GetStringTableData native binary-safe (#1232)

Replace StringToLocalUTF8 with LocalToString and memcpy to make this binary compatible and update the documentation.
This commit is contained in:
thewavelength
2020-04-14 17:51:39 +01:00
committed by GitHub
parent 1d98c3a782
commit 25462071df
2 changed files with 19 additions and 11 deletions
+16 -7
View File
@@ -184,8 +184,7 @@ static cell_t GetStringTableData(IPluginContext *pContext, const cell_t *params)
INetworkStringTable *pTable = netstringtables->GetTable(idx);
int stringidx;
const char *userdata;
int datalen;
size_t numBytes;
int datalen = 0;
if (!pTable)
{
@@ -199,12 +198,22 @@ static cell_t GetStringTableData(IPluginContext *pContext, const cell_t *params)
}
userdata = (const char *)pTable->GetStringUserData(stringidx, &datalen);
if (!userdata)
{
userdata = "";
}
pContext->StringToLocalUTF8(params[3], params[4], userdata, &numBytes);
char *addr;
pContext->LocalToString(params[3], &addr);
int maxBytes = params[4];
size_t numBytes = MIN(maxBytes, datalen);
if (userdata)
{
memcpy(addr, userdata, numBytes);
}
else if (maxBytes > 0)
{
addr[0] = '\0';
numBytes = 0;
}
return numBytes;
}