Исправлен краш, возникавший при использовании стандартного компилятора Pawn (до этого я использовал при тестировании только модифицированный компилятор от Zeex). Суть в том, что если использовать #emit сразу же после блока
if, то созданные с помощью #emit инструкции почему-то попадают в тот блок.
Иными словами, код
PHP код:
if(i==0)
SendClientMessageToAll(0, str);
#emit push.c str
#emit push.c 0xFFFFFFFF
#emit push.c 8
превращается компилятором в
PHP код:
if(i==0)
{
SendClientMessageToAll(0, str);
#emit push.c str
#emit push.c 0xFFFFFFFF
#emit push.c 8
}
Zeex уже знает об этом баге, но ещё не исправил его в своей версии компилятора.
Проблема проявлялась только при использовании стандартного компилятора, т.к. только при его использовании компилировался блок if. Решена она была следующим образом: после блока if я добавил "i = 100;" - это действие не имеет никакого смысла (т.к. переменная i уже создаётся с изначальным значением 100), но позволяет отделить #emit от if.
PHP код:
if(i==0)
SendClientMessageToAll(0, str);
i = 100;
#emit push.c str
#emit push.c 0xFFFFFFFF
#emit push.c 8