[13:05:08] Script[gamemodes/newegDB.amx]: In file 'I:\_eGaming\samp\_new_mysql-0.3d\__CORECTAT0.3c\pawno-3\include\float.inc' at line 108:
[13:05:08] Script[gamemodes/newegDB.amx]: Run time error 8: "Heap underflow"
[13:05:08] Error information:
[13:05:08] Heap index (HEA) is 0x8B, heap bottom (HLW) is 0x3F20FC
[13:05:08] Call stack (most recent call first):
[13:05:08] Stack corrupted!
stock Float:operator-(Float:oper)
return oper^Float:cellmin; /* IEEE values are sign/magnitude */
GetPlayerHealth(playerid, health);
SetPlayerHealth(playerid, health - 2.0);
GetPlayerHealth(playerid, health);
SetPlayerHealth(playerid, floatsub(health, 2.0));
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
Header size: 21152 bytes
Code size: 1581964 bytes
Data size: 4137212 bytes
Stack/heap size: 16384 bytes; estimated max. usage=1253 cells (5012 bytes)
Total requirements: 5756712 bytes
Done.
================ READY ================
My compile output is:
pawn Code:
|
This means that the compiler has detected that you are using more stack/heap space than is available. A lot of important information is stored on the stack, such as who called the current function, so PAWN knows where to return to. If you use too much memory, because of the way information is allocated, you can overwrite the stack information, returning to a random point in code and almost certainly crashing. At the very least you will get corrupted data where it's been overwritten by other data. When people get this message the standard advice is to use "#pragma dynamic", which is a workaround, not a fix - I find it very odd that something the size of YSI can not generate this error but people's tiny scripts can, don't you? |
"I:\_eGaming\samp\_new_mysql-0.3d\__CORECTAT0.3c\pawno-3\pawncc.exe" "$(FILE_NAME)" -; -\ -( -d0 -O1 -v2 -r
if(health > 20.0).. SetPlayerPos(pldi, coordx+2.0,.. new Float:a; a = 20.1 + 2.0; ....etc.
if(health > 20).. SetPlayerPos(pldi, coordx+2,.. new Float:a; a = 20 + 2; ....etc.