[ 新規に投稿する ]

アウトラインのツリー定義の読み込みでエラーが起きるNo.42421
Fzok4234 さん 25/12/29 07:00 [ コメントを投稿する ]
  おはようございます。Fzok4234 です。


「ファイルタイプ別の設定」->「アウトライン」->「解析」の「ツリー表示 - 通常」で、「読込み」から
以下のような内容の UTF-16 形式の .hilight ファイルからツリー定義を読み込もうとすると、
エラーメッセージが出てうまく読み込めません。

// ------------------------------------- test.hilight ------------------------------------------

/<TreeWord>
/0000,0002,0000,00000000,40011253,"(?:&#128105;&#127995;&#8205;&#128102;&#127996;|&#128104;&#127997;&#8205;&#128102;&#127998;&#8205;&#128102;&#127999;|&#128105;&#127996;&#8205;&#128104;&#127997;&#8205;&#128102;&#127996;&#8205;&#128103;&#127997;|&#128105;&#127995;&#8205;&#128105;&#127999;&#8205;&#128103;&#127996;&#8205;&#128103;&#127998;|&#128104;&#127995;&#8205;&#128104;&#127996;&#8205;&#128103;&#127995;&#8205;&#128103;&#127997;|&#128104;&#127997;&#8205;&#128105;&#127999;&#8205;&#128102;&#127995;&#8205;&#128103;&#127997;|&#128104;&#127999;&#8205;&#128105;&#127998;&#8205;&#128103;&#127999;&#8205;&#128103;|&#128104;&#8205;&#128104;&#127999;&#8205;&#128103;&#8205;&#128102;&#127995;|&#128105;&#127998;&#8205;&#128105;&#8205;&#128102;&#127998;|&#128104;&#8205;&#128104;&#8205;&#128103;&#8205;&#128102;&#127997;)",""
/<TreeWordEx>
/TreeWordExData:0

// ------------------------------------- test.hilight ------------------------------------------

エラーメッセージは、以下の 3 つが立て続けに出ました。


---------------------------
エラー
---------------------------
正規表現パターンでのカッコの対応が合ってません。
---------------------------
OK   
---------------------------


---------------------------
エラー
---------------------------
(?:&#128105;&#127995;&#8205;&#128102;&#127996;|&#128104;&#127997;&#8205;&#128102;&#127998;&#8205;&#128102;&#127999;|&#128105;&#127996;&#8205;&#128104;&#127997;&#8205;&#128102;&#127996;&#8205;&#128103;&#127997;|&#128105;&#127995;&#8205;&#128105;&#127999;&#8205;&#128103;&#127996;&#8205;&#128103;&#65533;&#63730;゚ - 正規表現の検索処理でエラーが発生しました。
---------------------------
OK   
---------------------------


---------------------------
エラー
---------------------------
ツリー表示用のバッファが一杯か、または不正な文字列があります。
---------------------------
OK   
---------------------------


対象の秀丸エディタは、9.52β7 x64 です。


[ ]
RE:42421 アウトラインのツリー定義の読み込みでエラーが起きるNo.42425
Fzok4234 さん 25/12/29 08:42 [ コメントを投稿する ]
  追伸


読み込む .hilight ファイルの内容を以下のように括弧を使わない正規表現に変えたところ、読み込み時の
エラーメッセージは出なくなりました。

// ------------------------------------- test.hilight ------------------------------------------

/<TreeWord>
/0000,0002,0000,00000000,40011253,"&#128105;&#127995;&#8205;&#128102;&#127996;|&#128104;&#127997;&#8205;&#128102;&#127998;&#8205;&#128102;&#127999;|&#128105;&#127996;&#8205;&#128104;&#127997;&#8205;&#128102;&#127996;&#8205;&#128103;&#127997;|&#128105;&#127995;&#8205;&#128105;&#127999;&#8205;&#128103;&#127996;&#8205;&#128103;&#127998;|&#128104;&#127995;&#8205;&#128104;&#127996;&#8205;&#128103;&#127995;&#8205;&#128103;&#127997;|&#128104;&#127997;&#8205;&#128105;&#127999;&#8205;&#128102;&#127995;&#8205;&#128103;&#127997;|&#128104;&#127999;&#8205;&#128105;&#127998;&#8205;&#128103;&#127999;&#8205;&#128103;|&#128104;&#8205;&#128104;&#127999;&#8205;&#128103;&#8205;&#128102;&#127995;|&#128105;&#127998;&#8205;&#128105;&#8205;&#128102;&#127998;|&#128104;&#8205;&#128104;&#8205;&#128103;&#8205;&#128102;&#127997;",""
/<TreeWordEx>
/TreeWordExData:0

// ------------------------------------- test.hilight ------------------------------------------

しかし、読み込まれた項目の内容が、以下のようにおかしくなってしまいました。
 ・内容     : &#128105;&#127995;&#8205;&#128102;&#127996;|&#128104;&#127997;&#8205;&#128102;&#127998;&#8205;&#128102;&#127999;|&#128105;&#127996;&#8205;&#128104;&#127997;&#8205;&#128102;&#127996;&#8205;&#128103;&#127997;|&#128105;&#127995;&#8205;&#128105;&#127999;&#8205;&#128103;&#127996;&#8205;&#128103;&#127998;|
 ・グループ : スリ鞋シリ゚頃スリ鞋シリ・頃スリ釛シリ゚頃スリ釛シリ&#63729;゚|スリ鞋シリ&#63729;゚頃スリ鰤シリ&#63731;゚頃スリ贖シリ゚頃スリ釛シリ&#63729;゚|スリ鞋シリ&#63731;゚頃スリ鰤シリ&#63730;゚頃スリ釛シリ&#63731;゚頃スリ釛|スリ鞋頃スリ鞋シリ&#63731;゚

文字列の内容が途中で途切れ、空欄にしたはずのグループに文字化けのような文字列が入り込んでいます。


[ ]
RE:42425 アウトラインのツリー定義の読み込みでエラーが起きるNo.42429
秀丸担当 さん 25/12/29 16:37 [ コメントを投稿する ]
  バグ情報ありがとうございます。
確かにおかしかったです。
何らかの対策を検討します。
[ ]
RE:42429 アウトラインのツリー定義の読み込みでエラーが起きるNo.42439
Fzok4234 さん 26/01/10 10:21 [ コメントを投稿する ]
  とりあえず、9.52β8 にアップデートして動作検証をしてみました。


読み込む .hilight ファイルを、

// --------------------------------------------- test.hilight ----------------------------------
/<TreeWord>
/0000,0002,0000,00000000,40011253,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",""
/<TreeWordEx>
/TreeWordExData:0
// --------------------------------------------- test.hilight ----------------------------------

というようにして「内容」のフィールドを極端に多い文字数にしても、これがバッファーオーバーフローして
「グループ」のフィールドまで流れ込む現象は起きなくなりました。


しかし、ヘルプには「内容」のフィールドは
 ・ASCII     : 1 文字
 ・Shift-JIS : 2 文字
 ・Unicode   : 4 文字
に換算して合計で 250 文字まで指定できる、という趣旨のことが書かれているが、実際に動作検証したところ、
これとは大きく異なる結果となりました。

まず、ASCII の「a」を 250 個並べて
/0000,0002,0000,00000000,40011253,"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",""
としたところ、本文で「a」が上記より少ない 101 個並んだ
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
にヒットしてしまいました。すなわち、「内容」のフィールドで実際に指定できる ASCII の最大文字数は 101 文字
と思われます。

次に、Shift-JIS の「あ」を 125 個並べて
/0000,0002,0000,00000000,40011253,"あああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ",""
としたところ、本文で「あ」が ASCII のときと同じ 101 個並んだ
あああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
にヒットしました。

次に、Unicode の「&#40960;」を 125 個並べて
/0000,0002,0000,00000000,40011253,"&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;",""
としたところ、これも ASCII や Shift-JIS と同様に「&#40960;」が 101 個並んだ
&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;&#40960;
にヒットしました。

さらに、別の Unicode の「&#128105;」を同様に 125 個並べて
/0000,0002,0000,00000000,40011253,"&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;",""
としましたが、今度は「&#40960;」のときと異なり、「&#128105;」が 101 個並んだ
&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;&#128105;
にはヒットしませんでした。

改めて、「&#128105;」を 1 個だけ指定して
/0000,0002,0000,00000000,40011253,"&#128105;",""
としましたが、
&#128105;aaaa
などの「&#128105;」から始まる行には一切ヒットしませんでした。これは完全なバグとみられます。


まとめると、「内容」フィールドに指定可能な最大文字数は
 ・ASCII の「a」      : 101 文字 ( 換算 101 文字 )
 ・Shift-JIS の「あ」 : 101 文字 ( 換算 202 文字 )
 ・Unicode の「&#40960;」   : 101 文字 ( 換算 404 文字 )
 ・Unicode の「&#128105;」   : 動作せず
となりました。


[ ]

[ 新規に投稿する ]