Skip to content
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

CGrepAgent::DoGrep のローカル変数初期化漏れ #225

Closed
yoshinrt opened this issue Jul 7, 2018 · 13 comments
Closed

CGrepAgent::DoGrep のローカル変数初期化漏れ #225

yoshinrt opened this issue Jul 7, 2018 · 13 comments
Milestone

Comments

@yoshinrt
Copy link
Contributor

yoshinrt commented Jul 7, 2018

bool bColmnSelect;
bool bLineSelect;
if( !pcViewDst->MyGetClipboardData( cmemReplace, &bColmnSelect, GetDllShareData().m_Common.m_sEdit.m_bEnableLineModePaste? &bLineSelect: NULL ) ){
this->m_bGrepRunning = false;
pcViewDst->m_bDoing_UndoRedo = false;
ErrorMessage( pcViewDst->m_hwndParent, LS(STR_DLGREPLC_CLIPBOARD) );
return 0;
}
if( bLineSelect ){

GetDllShareData().m_Common.m_sEdit.m_bEnableLineModePaste が false のときに,未初期化の bLineSelect を参照するようです.

(このレベルで issue 立てていいのか迷いましたが,問題があればご指摘ください)

@kobake
Copy link
Member

kobake commented Jul 7, 2018

ご指摘ありがとうございます。
このレベルであれば、対応余裕があれば直接PRくらいで良いです。対応余裕がなければ注意喚起としてIssueで良いです 👍

@m-tmatma
Copy link
Member

m-tmatma commented Jul 7, 2018

これはどうやって見つけましたか?
他にも同様の問題がないか気になります。

@kobake
Copy link
Member

kobake commented Jul 7, 2018

今スマホなので確認してないですが、警告レベルを最大にしたら検出してくれそうな雰囲気を感じます

@yoshinrt
Copy link
Contributor Author

yoshinrt commented Jul 7, 2018

これはどうやって見つけましたか?

ソースを眺めていてたまたま,です.
類似不具合の確認はしていません.

@yoshinrt
Copy link
Contributor Author

yoshinrt commented Jul 7, 2018

警告レベル /Wall で,C4701 のみ抜き出してみました.
とりあえず本 issue の箇所は検出されています.

d:\dds\sakura\sakura_core\cgrepagent.cpp(241): warning C4701: 初期化されていない可能性のあるローカル変数 'bLineSelect' が使用されます [D:\DDS\sakura\sakura\sakura.vcxproj]
d:\dds\sakura\sakura_core\charset\ccodepage.cpp(772): warning C4701: 初期化されていない可能性のあるローカル変数 'nBinaryPos' が使用されます [D:\DDS\sakura\sakura\sakura.vcxproj]
d:\dds\sakura\sakura_core\charset\ccodepage.cpp(886): warning C4701: 初期化されていない可能性のあるローカル変数 'nBinaryPos' が使用されます [D:\DDS\sakura\sakura\sakura.vcxproj]
d:\dds\sakura\sakura_core\io\cfileload.cpp(627): warning C4701: 初期化されていない可能性のあるローカル変数 'i' が使用されます [D:\DDS\sakura\sakura\sakura.vcxproj]
d:\dds\sakura\sakura_core\macro\cwsh.cpp(413): warning C4701: 初期化されていない可能性のあるローカル変数 'sThreadParam' が使用されます [D:\DDS\sakura\sakura\sakura.vcxproj]

@m-tmatma
Copy link
Member

m-tmatma commented Jul 7, 2018

ではまず、警告の設定だけを変えることにしますか?

@kobake
Copy link
Member

kobake commented Jul 7, 2018

/Wall にするととんでもない量の警告になりますよ。
実験的に /Wall にして警告チェックするのは良いですけど、現時点でプロジェクトとして /Wall にしちゃうのはまだ時期尚早だと思います。

警告レベルの調整は、現時点での x64 ビルドの警告ゼロが達成した後で考えたいです。

@m-tmatma
Copy link
Member

m-tmatma commented Jul 7, 2018

警告レベルの調整は、現時点での x64 ビルドの警告ゼロが達成した後で考えたいです。

#227 を登録しました。

@berryzplus
Copy link
Contributor

/Wall にするととんでもない量の警告になりますよ。
実験的に /Wall にして警告チェックするのは良いですけど、現時点でプロジェクトとして /Wall にしちゃうのはまだ時期尚早だと思います。

参考情報です。
現時点のmaster6191664で33,548警告出ました。 (Win32 - Debug)
windows SDK内の警告が相当数含まれているので、あまり正確な数字じゃないです。
SDK内のヘッダの警告を拾わないように適切な #pragma をいれてやる必要がありそうです。
x64 - Debugだと24,236警告になる理由は Win64 向けのヘッダは最近作られたものだからかと思います。

当面は x64 - Debugのレベル3警告621件に対処するのが先決なのかな、と思っています。
警告ゼロはレベル3警告=ゼロの意味ですよね?
x64 - Debugのレベル4警告対応はしなくていいんでしたっけ?(7,438警告あります)

あと、/Wallしてみて気付いたんですが、廃止された警告番号があるようです。

#pragma warning(disable: 4345) //warning C4345: 動作変更 : 形式 () の初期化子で構築される POD 型のオブジェクトは既定初期化されます。

@KENCHjp
Copy link
Member

KENCHjp commented Jul 7, 2018

プロジェクトのコンパイルオプション?みたいなもので調整できるものもあるんすかね。
それともデフォルトからいじるものじゃないとか・・・

Delphiでも「まぁ、それいいやん、チェックしなくっても」ってやつはポチってコンパイルオプションで許容するようにしちゃったり。。。

@m-tmatma
Copy link
Member

m-tmatma commented Jul 7, 2018

プロジェクトのコンパイルオプション?みたいなもので調整できるものもあるんすかね。

警告レベルを上げる以外にも Visual Studio に標準で入っている静的解析の機能もあります。

@KENCHjp
Copy link
Member

KENCHjp commented Jul 7, 2018

Visual Studio に標準で入っている静的解析の機能もあります。

おお、あるんですね!

@berryzplus
Copy link
Contributor

#236がマージされたのでクローズします。

@m-tmatma m-tmatma added this to the next release milestone Aug 19, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants