usagisita
usagisita
## 問題内容 マクロ引数のうち文字列型を扱うものの一部で、ファイルパスなど内部仕様による制限が存在しているにもかかわらず、一切チェックされずバッファがコピーされたり強制終了したりする現状の動作を改善したいです。 ## 再現手順 Editor.FileSaveAs("<260文字を超えるような長い文字列>") などのマクロを実行します。 またExtHtmlHelpを悪用することで設定によってはwcscpyのバッファオーバーランによりメモリー上の共有データ構造体を破壊することができます。 なおInsText、InsBoxText、AddTailなどで巨大な文字列を指定しメモリー上限に達してクラッシュするようなタイプはこのIssueの考慮対象外としたいです。 ## 再現頻度 いつも ## 問題のカテゴリ - 仕様の問題 - プログラムの動作上の問題 - 正式リリース版 ## その他 参考情報として、FileSaveAsマクロ等でのファイル名に関して、CON、PRN、NUL、AUX、COM1などの特殊ファイル名を指定すると、保存処理の段階でクラッシュしたり応答なしになったりすることもありますが、これも今回のIssueの範囲外としたいです。 対応を考えるのであれば、またIssueなどを作成するなりコメントなどをお願いします。 マクロの文字列長には「\0(NUL)までの長さ(wcslen、lstrlen)」と「文字列全体の長さ==BSTRの長さ」が存在しています。 処理の仕方によっては、この2つの混同により現状では正しく処理されていないケースもあるかもしれません。 例えばInsText、InsBoxTextなどでは文字列の途中にNULが含まれるケースが想定されておりBSTRの長さが使わています。 一方、SearchNext、Replaceなど検索系ではNULまでの長さが使われているようです。NUL文字を検索するには正規表現でのエスケープ処理が必要です。 必要があるのであれば、これらの処置の確認もしたほうがいいかもしれません。
## 問題内容 CPPA.cppのコードを眺めていたところ、バグっぽいコードを見つけたので報告だけしておきます。 ■1つめ https://github.com/sakura-editor/sakura/blob/2deb79197c608f00897453a762d9178d07fc59e5/sakura_core/macro/CPPA.cpp#L353 このifは前のループでヒットしなかった場合なので、`m_MacroFuncInfoCommandArr[i] == -1`ではないでしょうか。 現状では処理対象が間違っている上、iが範囲外アクセスになる可能性がありそうです。 ■2つめ https://github.com/sakura-editor/sakura/blob/2deb79197c608f00897453a762d9178d07fc59e5/sakura_core/macro/CPPA.cpp#L381 ppa.dllが細工された、または特殊なもの(自作言語のマクロDLLとか)だったりした場合に、Err_Mesが約2000文字以上を返してくると、szMesがバッファオーバーフローする危険があります。 ## 再現手順 ## 再現頻度 ## 問題のカテゴリ - プログラムの動作上の問題 - 正式リリース版 - その他の問題
## PR の目的 縦線を印刷に反映する #1397 に対応する実装をしてみたものです。 空気を読まず、昨晩、しこしこ引数が分からんといいながらこさえました。 指定桁縦線が印刷されるようになります。 ## カテゴリ - 機能追加 - 仕様変更 ## PR の背景 コードは一応完成しているものの、印刷はしてみていないので、作業中ということで、お願いします。 処理を元のコードと共通化したいがために、staticおじさん化しそうな感じの関数になってしましました。所感をお願いしたいです。 「線が実線だと太いかどうか」だけでも確認できればいいんじゃないでしょうか。 なお8(1,80)という表示では、画面ではほぼ見ることができない、1桁目の左側にも線が引かれるようです。 8桁目から引きたい場合は次のステップである「8(9,81)」と書くと、開始を最初の8桁目の後ろ、80桁目の右に線がつきます。 あと、余談ですが元のコードから「下線」指定にすると「点線」にできます。 印刷はDirectYがあり、座標系が上下逆みたいで、少し混乱しました。 ## PR のメリット 今すぐ、縦線が印刷したい人、とかには便利かもしれません。 ## PR...
## 問題内容 Ctrl+Endや↓キー移動の結果スクロールする最下部と、スクロールバーを右クリックして「最下部」を選んでスクロールした状態と、マウススクロールでスクロールした結果の最下部の表示行の限界値が、そろっていません。 特にスクロールバーの「最下部」では他のコマンドより2行程度上が限界値で、EOFが横スクロールバーに掛かっているような表示になってしまいます。 しかもその状態でスクロールバーの「▽」を押すと、下に数行スクロールできます。 実害はあまりありませんが、なんとなく気持ち悪さを感じます。 ## 問題のカテゴリ - 仕様の問題 - プログラムの動作上の問題 - ローカルビルド版
## 問題内容 sf.netの不具合対応パッチの転載、情報共有です。 https://sourceforge.net/p/sakura-editor/patchunicode/1081/ 一文字入力で、行をまたがる色分けされたダブルクォート文字列のクォートを上書きすると、継続行の色分けが一時的に不正になります。 ## 再現手順 タイプ別設定、カラーで「ダブルクォーテーション文字列」の色分けをオンにします。 (SSでは赤に設定しています) 念のため、文字列エスケープで「C/C++言語風」を選択します。 「行内のみ」をオフにします。 >あああ"いいいいい いいいいいいいいい いいいいいいいいい いいいい"うううう うううううううう ええええええええ とあると「あ"い」の"にカーソルを置きます。 INSで「上書きモード」にします。 「a」や「あいう」などを文字入力します。 S_Charになる「a」S_InsTextになる「あいう」で違いは特にないようです。 そうすると、継続行が文字列の色のままになります。 F5キーを押すと、色分けは正常に戻りますので、一時的な再描画不足だと考えられます。 ## 再現頻度 100%、必ず、いつも ## 問題のカテゴリ - 仕様の問題...
## 問題内容 sf.netでバグ修正パッチが登録されているけど適用されていないものです。 説明を読んだのですがよくわからないので、とりあえず情報共有しておきます。 概要からすると、修正はしたほうがいいとは思いますが、かなり使い込んだ使い方をしないと再現しないっぽい気がします。 https://sourceforge.net/p/sakura-editor/patchunicode/1087/ ## 再現手順 不明。 ## 再現頻度 コードの問題だと思うので、そのルートを通るなら100%っぽいです。 ## 問題のカテゴリ - 仕様の問題 - プログラムの動作上の問題 ## 環境情報 - OS バージョン - サクラエディタバージョン 2.3.0.0ぐらいだと推定(転載のため) - PC情報 ## スクリーンショット...
## 問題内容 左向き単語移動(Ctrl+←)または選択(Ctrl+Shift+←)で、「コーヒーがある」という文章の「る」側から左に移動すると 「が」で止まらない。 「ー」まで突き抜けてとまります。 あまり左向きには選択しないので、気が付きにくいかもしれません。 でも小説とか書いていると、たまに遭遇して、ちょっと困ります。 https://sourceforge.net/p/sakura-editor/patchunicode/1098/ このパッチでは、バグ修正だけでなく、機能追加的なものも含んでいるように見えます。 サクラエディタでは「伸ばし棒」は直前の文字がひらがなかカタカナを判別していますが、その直前というのが「検索方向」に依存していて、なぜか左固定になっていないのが原因です。 これを修正すると、カーソル単語移動の仕様が変わってしまうため、バグに依存したマクロを書いたり、キーマクロを使っていると互換性がありません。 しかし修正しないならしないで、あきらかに「変な仕様」だと思います。 ちょっと調べた範囲では、 Firefox:「伸ばし記号」はカタカナ扱いで、ひらがなとはくっつきません。 Chrome:よくわからない内部で単語リストを保持していて「スクリーンショット」だと「スクリーン」と「ショット」で分離して移動します。 メモ帳(win8.1):英語では単語移動が有効ですが、日本語では残念なことに、一文字ずつしか移動しません。 しかし「ティ」とか「ラッ」「アー」など後ろに着く文字は1単語扱いで、一度に移動します。また両端どまりではないようで鉤括弧も一緒に移動します。 「バージョン」は「バー」「ジョ」「ン」と分離されていて右から左に移動しても「-ジ」や「ョン」にはなったりしません。 ## 再現手順 本文「コーヒーがある」を右から左に単語単位移動してみます。 ## 再現頻度 100% ## 問題のカテゴリ - 仕様の問題 - プログラムの動作上の問題...
## 問題内容 CControlTray::OpenNewEditorでレスポンスファイルが使われるか使われないかの境界線で、1文字分バッファが不足しているため、クラッシュすることがあります。 ## 再現手順 1000文字ぐらいの検索キーワードでGrepします。 コマンドライン文字数が特定の文字列長になった場合のみクラッシュします。 sakura.exeのパス長などに依存するため特定の長さは環境により異なります。 ## 再現頻度 特定条件下では100% ## 問題のカテゴリ - プログラムの動作上の問題 - 正式リリース版 ## 環境情報 - OS バージョン - サクラエディタバージョン - PC情報 ## スクリーンショット https://github.com/sakura-editor/sakura/blob/10dda8eebc785423a778b2c14224497a6bbac93a/sakura_core/_main/CControlTray.cpp#L1164 分かりにくいですが、下のelse句での文字列を出力するときに入りきらないか判定しています。...
## 問題内容 タイプ別設定のカラー、色指定リストの背景色がDPI変更に未対応で色の幅がおかしいです。 2018/09/30の dd0b3177 の考慮漏れだと思います。 ## 再現手順 DPIを100%以外にします。 タイプ別設定のカラータブを表示します。 「テキスト」などの水色の背景色が文字色の部分に掛かっています。 ## 再現頻度 DPIを100%以外にすれば、100% ## 問題のカテゴリ - プログラムの動作上の問題 ## 環境情報 - OS バージョン Windows 8.1 Home 64bit - サクラエディタバージョン v2.4.0.2214...
## 問題内容 TCHAR系マクロ_stprintfが2か所残っています。 不要なら他のsprintf系関数に置換したほうがいいと思います。 特にParseCommandLineのほうは、リソース文字列表示なので、特殊な言語ファイルを読み込むと、バッファオーバーランする可能性があるので、それっぽい関数に変更してほしいです。 https://github.com/sakura-editor/sakura/blob/948ce7e2ea0c230270c87a092860cda6756095c3/sakura_core/_main/CCommandLine.cpp#L325-L329 https://github.com/sakura-editor/sakura/blob/948ce7e2ea0c230270c87a092860cda6756095c3/sakura_core/util/shell.cpp#L569 (取り敢えず、Issuesで報告します) ## 問題のカテゴリ - その他の問題