Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR の目的
-GKEY
などの文字列を指定できるコマンドラインオプションを内部変数にコピーする処理で、検出した文字列長を使わずに再計算しているのが効率悪いので、検出済みの文字列長を使うように修正します。カテゴリ
PR の背景
コマンドラインオプションには、文字列値をパラメータとして指定できるものがあります。
たとえば
-GKEY
の設定はこうなっています。sakura/sakura_core/_main/CCommandLine.cpp
Lines 420 to 424 in bb83d9d
このPRでやりたいことは
lstrlen( arg )
をやめることです。argの宣言はこうなっていて、nArgLenとセットで宣言されています。
sakura/sakura_core/_main/CCommandLine.cpp
Lines 357 to 359 in bb83d9d
CCommandLine::CheckCommandLine
は、オプション文字列-GKEY="\s+"
を受け取って\s+
を検出する関数です。sakura/sakura_core/_main/CCommandLine.cpp
Lines 75 to 79 in bb83d9d
検出した文字列長があるのにそれを使わず、lstrlen したり省略して wcslen したりするのは無駄だと思います。
PR のメリット
CCommandLine::CheckCommandLine
で検出した文字列長を使うことにより、不要な文字列長計算を行わなくてすむようになります。PR のデメリット (トレードオフとかあれば)
CCommandLine::CheckCommandLine
の文字列長検出に誤りがあった場合、文字列値を指定できるコマンドラインオプションの解析結果に悪影響が出るようになります。仕様・動作説明
仕様・動作に変更はありません。
テスト内容
変更行は全行が単体テスト https://github.com/sakura-editor/sakura/blob/master/tests/unittests/test-ccommandline.cpp の範囲に含まれるため、追加で実施するテストはありません。
PR の影響範囲
文字列値を指定できるコマンドラインオプションを指定したときの動作に影響します。
関連 issue, PR
#1420
参考資料