Re: バグ報告スレッド 13 [ No.164 ]
メンテ
 2023/04/25 08:17
 almerion
いつもお世話になっております。

ウディタver3.175(pro)版で、強制終了するコマンドの組み合わせがありましたので一応バグ?としてご報告いたします。


特殊文字を文字列操作コマンドで一文字切り出して、
それに対して<<GET_STRING_WIDTH_COUNT>>(ここには一文字切り出した文字列変数を指定)(※UTF-8、SJIS、自動判別問わず発生)を実行すると、
ゲーム画面がフリーズして強制終了します。

ver3で実装されている特殊文字のうち、以下のもので発生します。

¥^
¥f+[xx]
¥m[xx]
¥bx[xx]
¥isize[xx]


※以下の特殊文字の場合は強制終了はせず、正常に数値が代入されました。

<L>左揃え
<C>中央揃え
<R>右揃え
¥Eフチ付き
¥Nフチなし
¥A+滑らか
¥A-ドット
¥¥
¥!
¥.
¥>
¥<
¥r[文字,ルビ]
¥img[Icon/i001.png]画像
¥img[Icon/i002.png]画像ガタガタ&くっきり
¥f[xx]フォントサイズ変更
¥font[x]フォント変更
¥mx[xx]次に表示する文字のX座標を??ピクセルだけずらす
¥my[xx]次に表示する文字のY座標を??ピクセルだけずらす
¥c[x]フォント色変更
¥cE[x]文字フチ色変更
¥cS[x]文字影色変更
¥ax[xx]次に表示する文字のX座標を、強制的に??ピクセルにする
¥ay[xx]次に表示する文字のY座標を、強制的に??ピクセルにする
¥sp[xx]以降の文字速度を秒間??文字に変更する
¥space[xx]以降の改行間隔を??ピクセルに変更する
¥wE[xx]太さXXのフチ付きにする
¥-[xx]XXピクセル分、以降の文字幅を詰める。XXにマイナスの値を入れると文字が広がる
¥i[xx]アイコン
¥iS[xx]アイコンガタガタ&くっきり


【以下、再現用イベントコード】
※基本システム有りのサンプルゲーム上でコモンイベントとして作成し、マップイベントから名前呼び出しで実行

WoditorEvCOMMAND_START
[179][1,0]<0>(1)()
[103][0,1]<1>()("※\^を一文字切り出して、その文字列長をカウントすると、そこで画面がフリーズして強制終了する。")
[101][0,1]<1>()("\^あいうえお")
[122][3,0]<1>(1600005,2,9900025)()
[122][3,0]<1>(1600006,1025,1600005)()
[122][4,1]<1>(1600007,1280,0,1)("<<GET_STRING_WIDTH_COUNT>>\cself[6]")
[0][0,0]<1>()()
[498][0,0]<0>()()
[103][0,1]<0>()(" ")
[179][1,0]<0>(1)()
[103][0,1]<1>()("※\f+[xx]を一文字切り出して、その文字列長をカウントすると、そこで画面がフリーズして強制終了する。")
[101][0,1]<1>()("\f+[20]あいうえお")
[122][3,0]<1>(1600005,2,9900025)()
[122][3,0]<1>(1600006,1025,1600005)()
[122][4,1]<1>(1600007,1280,0,1)("<<GET_STRING_WIDTH_COUNT>>\cself[6]")
[0][0,0]<1>()()
[498][0,0]<0>()()
[103][0,1]<0>()(" ")
[179][1,0]<0>(1)()
[103][0,1]<1>()("※\m[xx]を一文字切り出して、その文字列長をカウントすると、そこで画面がフリーズして強制終了する。")
[101][0,1]<1>()("\m[40]あいうえお")
[122][3,0]<1>(1600005,2,9900025)()
[122][3,0]<1>(1600006,1025,1600005)()
[122][4,1]<1>(1600007,1280,0,1)("<<GET_STRING_WIDTH_COUNT>>\cself[6]")
[0][0,0]<1>()()
[498][0,0]<0>()()
[103][0,1]<0>()(" ")
[179][1,0]<0>(1)()
[103][0,1]<1>()("※\bx[xx]を一文字切り出して、その文字列長をカウントすると、そこで画面がフリーズして強制終了する。")
[101][0,1]<1>()("\bx[50]あいうえお")
[122][3,0]<1>(1600005,2,9900025)()
[122][3,0]<1>(1600006,1025,1600005)()
[122][4,1]<1>(1600007,1280,0,1)("<<GET_STRING_WIDTH_COUNT>>\cself[6]")
[0][0,0]<1>()()
[498][0,0]<0>()()
[103][0,1]<0>()(" ")
[179][1,0]<0>(1)()
[103][0,1]<1>()("※\isize[xx]を一文字切り出して、その文字列長をカウントすると、そこで画面がフリーズして強制終了する。")
[101][0,1]<1>()("\isize[200]\i[1]あいうえお")
[122][3,0]<1>(1600005,2,9900025)()
[122][3,0]<1>(1600006,1025,1600005)()
[122][4,1]<1>(1600007,1280,0,1)("<<GET_STRING_WIDTH_COUNT>>\cself[6]")
[0][0,0]<1>()()
[498][0,0]<0>()()
[103][0,1]<0>()(" ")
WoditorEvCOMMAND_END


また、<<GET_STRING_WIDTH_COUNT>>で特殊文字をカウントしたところ、以下のようになりましたが、
数値にパターンのようなものがありましたので、これは仕様でしょうか?

<L>と<C>のカウント数値は 0
<R>と¥¥は 1
\!と\.と\Eは 2
\A+と\A-と\r[は 3
\img[と\imgS[は 5

文字列操作の<<GET_STRING_WIDTH_COUNT>>について、マニュアルには「改行や特殊文字はカウントしません」と記載されているので、特殊文字を格納した文字列変数と組み合わせての使い方は本来想定されないものでしたら、まことに申し訳ありません。