Increase get_amxstring buffer size (bug 5901, r=ds)
This commit is contained in:
parent
a86ca1491f
commit
ce4ef6e272
@ -179,38 +179,9 @@ normal_string:
|
|||||||
|
|
||||||
char *get_amxstring(AMX *amx, cell amx_addr, int id, int& len)
|
char *get_amxstring(AMX *amx, cell amx_addr, int id, int& len)
|
||||||
{
|
{
|
||||||
static char buffor[4][3072];
|
static char buffer[4][16384];
|
||||||
register cell* source = (cell *)(amx->base + (int)(((AMX_HEADER *)amx->base)->dat + amx_addr));
|
len = get_amxstring_r(amx, amx_addr, buffer[id], sizeof(buffer[id]) - 1);
|
||||||
register char* dest = buffor[id];
|
return buffer[id];
|
||||||
char* start = dest;
|
|
||||||
|
|
||||||
if ( (amx->flags & AMX_FLAG_OLDFILE) &&
|
|
||||||
(*source & BCOMPAT_TRANSLATE_BITS) )
|
|
||||||
{
|
|
||||||
const char *def, *key;
|
|
||||||
if (!translate_bcompat(amx, source, &key, &def))
|
|
||||||
{
|
|
||||||
goto normal_string;
|
|
||||||
}
|
|
||||||
while ( (*dest++ = (*def++)) );
|
|
||||||
len = --dest - start;
|
|
||||||
} else {
|
|
||||||
normal_string:
|
|
||||||
while ((*dest++=(char)(*source++)));
|
|
||||||
|
|
||||||
len = --dest - start;
|
|
||||||
}
|
|
||||||
|
|
||||||
#if defined BINLOG_ENABLED
|
|
||||||
if (g_binlog_level & 2)
|
|
||||||
{
|
|
||||||
CPluginMngr::CPlugin *pl = g_plugins.findPluginFast(amx);
|
|
||||||
if (pl)
|
|
||||||
g_BinLog.WriteOp(BinLog_GetString, pl->getId(), amx_addr, start);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return start;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void copy_amxmemory(cell* dest, cell* src, int len)
|
void copy_amxmemory(cell* dest, cell* src, int len)
|
||||||
|
@ -13,6 +13,13 @@
|
|||||||
|
|
||||||
#include <svn_version>
|
#include <svn_version>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is the buffer size AMX Mod X uses internally to retrieve strings from plugins.
|
||||||
|
* Most natives that take strings as arguments will implicitly truncate those to this maximum length.
|
||||||
|
* This has been raised to the current value with AMXX 1.8.3. Previously the limit was 3072.
|
||||||
|
*/
|
||||||
|
#define MAX_STRING_LENGTH 16384
|
||||||
|
|
||||||
#define M_PI 3.1415926535
|
#define M_PI 3.1415926535
|
||||||
|
|
||||||
#define ADMIN_ALL 0 /* everyone */
|
#define ADMIN_ALL 0 /* everyone */
|
||||||
|
Loading…
Reference in New Issue
Block a user