#uselib "user32.dll" #func SetTimer "SetTimer" int,int,int,int #func KillTimer "KillTimer" int,int SetTimer hwnd,1,2000,0 oncmd gosub *timer,0x0113 onexit *exit stop *exit KillTimer hwnd,1 end *timer mes sublev // if(sublev==1){ font // } return
このソースは、パラメーターを省略したfontを実行させてエラーを発生させています。
*timerは2秒おきに実行され、
一度目のfontの実行でエラーダイアログが出て、
二度目のfontで落ちます。
このソースでは2秒おきなので特に問題ありませんが、
このサイクルが短いときは一瞬で消えてしまうので、
どこでエラーが発生したのかがわかりません。
タイマーを使わなくても、
2重でエラーを発生させることができればこの現象は発生するようです。
この問題を解消するため、
HSPでエラーが発生したとき、標準で割り込みが実行されないようにしてください。