-
Notifications
You must be signed in to change notification settings - Fork 168
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
検索条件の文字列をエスケープする処理を関数化する #1132
検索条件の文字列をエスケープする処理を関数化する #1132
Conversation
✅ Build sakura 1.0.2474 completed (commit 2625abd27f by @berryzplus) |
✅ Build sakura 1.0.2475 completed (commit ea1c1d3d33 by @berryzplus) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
問題無いと思います。
動作確認はしていません…。
レビューありがとうございます。 |
cmemWork.AppendNativeData( cmemWork2 ); | ||
cmemWork.AppendString( L"\"\r\n" ); | ||
cmemWork = EscapeStringLiteral( type, *pcmGrepKey ); | ||
cmemMessage.AppendStringF( L"\"%s\"\r\n", cmemWork.GetStringPtr() ); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
cmemWork=>pcmGrepKey は、GUI、コマンドラインともに、普通に2048文字を超える検索に対応しているので、アウトですね。
cmemReplaceのほうも同様です。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
sakura/sakura_core/mem/CNativeW.cpp
Lines 85 to 104 in 48021e1
//! バッファの最後にデータを追加する (フォーマット機能付き) | |
void CNativeW::AppendStringF(const wchar_t* pszData, ...) | |
{ | |
wchar_t buf[2048]; | |
// 整形 | |
va_list v; | |
va_start(v, pszData); | |
int len = _vsnwprintf_s(buf, _countof(buf), _TRUNCATE, pszData, v); | |
int e = errno; | |
va_end(v); | |
if (len == -1) { | |
DEBUG_TRACE(L"AppendStringF error. errno = %d", e); | |
throw std::exception(); | |
} | |
// 追加 | |
this->AppendString(buf, len); | |
} |
お、本当ですね。言われてみるとそういえばそうだった…感が…。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
#1135 を作成しました。
…_escape_string_literal 検索条件の文字列をエスケープする処理を関数化する
PR の目的
CGrepAgent::DoGrep関数を分かりやすくするために、関数内の重複処理に名前を付けて関数化します。処理に名前が付くことによって「何をしているか」が明確になり、分かりやすくなります。
カテゴリ
PR の背景
CGrepAgent::DoGrep関数は、Grep検索とGrep置換の実処理を担当する部分です。
長年の機能追加により、処理内容がかなりぐちゃぐちゃになっており、
リファクタリングが必要な関数だと思っています。
サクラエディタのGrep機能は比較的信頼できる部類のツールですが、
Grep処理がシングルスレッドで行われる都合でパフォーマンスがよくありません。
処理のマルチスレッド化を行うにあたっては、
基本的な部分の整理が必要と考え、
まずは「見たら分かる」レベルの簡単なリファクタリングを提案してみることにしました。
PR のメリット
PR のデメリット (トレードオフとかあれば)
※そういう趣旨の変更がレビューで通る事態は想像できませんが、将来どうするかは分からんので。
PR の影響範囲
関連チケット
参考資料