HSP コンパイラをSEGVさせる脅威のスクリプト

#undef mes
#define mes(%1) mes %1:mes %1
mes "hoge"

このスクリプトヤバい。
コンパイルしようとするとすとーんと落ちる。エディタも道連れに。
Linux版OpenHSPで試してみるとSegmentation faultと。
これはマズいので直すべき。
マクロの展開あたりのバグだろうか。

      • -
#define a(%1) a %1:b %1
a 0

でもうまくいく。

      • -
#define a(%1) a %1 %c b %1
a 0

だけど、これだと

#HSP script preprocessor ver3.1 / onion software 1997-2007(c)
#Use file [hspdef.as]
#Error:macro buffer overflow in line 2 [hsptmp]
#Fatal error reported.

で。

      • -
#define a(%1) a %1:b
a 0

だと

#HSP script preprocessor ver3.1 / onion software 1997-2007(c)
#Use file [hspdef.as]
#Error:illegal macro parameter in line 2 [hsptmp]
#Fatal error reported.

なんだな。
ふしぎ!

      • -

ここでgdbの使い方が分かっていればさっとどこでSEGVが起こっているかわかるのになあとか思った。