Fixed JIT crashing on some kernel configs (like FC2 >= 2.6.6)
This commit is contained in:
parent
826893d8d2
commit
712859eb20
@ -29,6 +29,9 @@
|
|||||||
* version.
|
* version.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef __linux__
|
||||||
|
#include <sys/mman.h>
|
||||||
|
#endif
|
||||||
#include "amxmodx.h"
|
#include "amxmodx.h"
|
||||||
#include "osdep.h" // sleep, etc
|
#include "osdep.h" // sleep, etc
|
||||||
#include "CFile.h"
|
#include "CFile.h"
|
||||||
@ -174,10 +177,16 @@ int load_amxscript(AMX *amx, void **program, const char *filename, char error[64
|
|||||||
return (amx->error = AMX_ERR_INIT);
|
return (amx->error = AMX_ERR_INIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (amx_InitJIT(amx, rt, np) == AMX_ERR_NONE)
|
if ( (err = amx_InitJIT(amx, rt, np)) == AMX_ERR_NONE )
|
||||||
{
|
{
|
||||||
|
void *blk;
|
||||||
//amx->base = (unsigned char FAR *)realloc( np, amx->code_size );
|
//amx->base = (unsigned char FAR *)realloc( np, amx->code_size );
|
||||||
|
#ifndef __linux__
|
||||||
amx->base = new unsigned char[ amx->code_size ];
|
amx->base = new unsigned char[ amx->code_size ];
|
||||||
|
#else
|
||||||
|
posix_memalign((void **)&(amx->base), sysconf(_SC_PAGESIZE), amx->code_size);
|
||||||
|
mprotect((void *)amx->base, amx->code_size, PROT_READ|PROT_WRITE|PROT_EXEC);
|
||||||
|
#endif
|
||||||
if ( amx->base )
|
if ( amx->base )
|
||||||
memcpy( amx->base , np , amx->code_size );
|
memcpy( amx->base , np , amx->code_size );
|
||||||
delete[] np;
|
delete[] np;
|
||||||
@ -193,7 +202,7 @@ int load_amxscript(AMX *amx, void **program, const char *filename, char error[64
|
|||||||
{
|
{
|
||||||
delete[] np;
|
delete[] np;
|
||||||
delete[] rt;
|
delete[] rt;
|
||||||
strcpy(error,"Failed to initialize plugin");
|
sprintf(error, "Failed to initialize plugin (%d)", err);
|
||||||
return (amx->error = AMX_ERR_INIT_JIT);
|
return (amx->error = AMX_ERR_INIT_JIT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user