■
SEGVる(デバッグウィンドウを表示しているときのみ)。
gosub *a:stop *a: return 1e300
hsp3code.cpp void code_adddbg( char *name, double val ) が原因なんだけどどうしようかな。
- snprintfを使う
- バッファサイズを大きくする
#include <stdio.h> int main( void ) { char tmp[64]; double val = 1e60; sprintf( tmp, "%-36.16f", val ); return 0; }
とりあえず、こんなプログラムで強制終了されるのを確認した。
-
-
- -
-
公式のhsp3.exe(HSP 3.1)だったらなぜかSEGVらないなー、と思ってOpenHSP 3.1を確認したら違うコードだった。
void code_adddbg( char *name, double val ) { char tmp[2048]; sprintf( tmp, "%s\r\n%f\r\n",name,val ); sbStrAdd( &dbgbuf, tmp ); }
うん、よく見たら HSP 3.1 では3.140000って表示なのに OpenHSP 3.2b1 では 3.1400000000000001 だった。(正確にはその後にスペースが続く