leftstr, rightstr, midstr 関数のハングNo.08115
titti さん 16/05/18 13:21
 
こんにちは、秀丸ユーザーの titti です。
度々すいません。

leftstr, rightstr, midstr 関数がハングアップします。

【再現条件】
(1) leftstr, rightstr, midstr 関数に unicode 文字を含む文字列を渡し、
  返す文字数に 0 を設定した場合にハングアップ。
(2) 同条件の wcsleftstr, wcsrightstr, wcsmidstr では空文字を返す。
  ( (2) は自分の期待している動作でもあります。)

【テスト環境】
秀丸エディタ:V8.56 32bit edition
OS:Windows XP SP3

 unicode 文字を扱う場合には wcs 有りの関数を使った方が良いですか?
自分の認識としては wcs の有無の違いは文字数/文字位置だけと解釈していました。
便利なので普段は wcs 有りの方を使っています。
 ただ最近 HmJre.dll の関数も使うようになり、その場合 wcs 無しの方が扱い易く、
この辺の仕様とか想定した使い方とかどうなのかな? と思い問い合わせました。

 尚、現状では wcs 無しの方を使うときには、文字数が 0 の時だけ別処理にして
いるので、当方としては一応対策はできています。

以上、よろしくお願い致します


// --- unicode 文字を含まない場合は、文字数 0 で空文字を返す -------------
message wcsleftstr("abcdefg",2); // ab を返す
message wcsleftstr("abcdefg",0); // 空文字を返す
message leftstr("abcdefg", 2); // ab を返す
message leftstr("abcdefg", 0); // 空文字を返す

message wcsrightstr("abcdefg",2); // fg を返す
message wcsrightstr("abcdefg",0); // 空文字を返す
message rightstr("abcdefg", 2); // fg を返す
message rightstr("abcdefg", 0); // 空文字を返す

message wcsmidstr("abcdefg", 2, 2); // cd を返す
message wcsmidstr("abcdefg", 2, 0); // 空文字を返す
message midstr("abcdefg", 2, 2); // cd を返す
message midstr("abcdefg", 2, 0); // 空文字を返す

// --- unicode 文字を含む場合は、文字数 0 でハングアップ -----------------
message wcsleftstr("\u00AEabcdefg",2); // unicodeの丸付Rと a を返す
message wcsleftstr("\u00AEabcdefg",0); // 空文字を返す
message leftstr("\u00AEabcdefg", 2); // unicodeの丸付Rと a を返す
message leftstr("\u00AEabcdefg", 0); // ハングアップ

message wcsrightstr("\u00AEabcdefg",2); // fg を返す
message wcsrightstr("\u00AEabcdefg",0); // 空文字を返す
message rightstr("\u00AEabcdefg", 2); // fg を返す
message rightstr("\u00AEabcdefg", 0); // ハングアップ

message wcsmidstr("\u00AEabcdefg", 2, 2); // bc を返す
message wcsmidstr("\u00AEabcdefg", 2, 0); // 空文字を返す
message midstr("\u00AEabcdefg", 2, 2); // bc を返す
message midstr("\u00AEabcdefg", 2, 0); // ハングアップ

endmacro;

[ ]
RE:08115 leftstr, rightstr, midstr 関数No.08116
秀丸担当 さん 16/05/18 14:03
 

バグ情報ありがとうございます。
言われている通り落ちるようになってしまっていました。
V8.56の修正が影響していました。

HmJreの修正も含めてV8.59を出す予定ですが、合わせてこちらの件も修正させて
いただきます。

[ ]
RE:08116 leftstr, rightstr, midstr 関数No.08117
titti さん 16/05/18 19:47
 
V8.59 でハングアップしなくなったのを確認しました。
ありがとうございました。

[ ]