Ticket #25417

ttpmenuでGDIオブジェクトのリソースリーク

Open Date: 2011-06-13 17:48 Last Update: 2011-07-25 22:54

Reporter:
(Anonymous)
Owner:
(None)
Type:
Status:
Closed
Component:
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
Fixed
File:
None
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

ttpmenuを利用中に、リモートデスクトップでのログオンとコンソールからの ログオンを交互に実施すると、GDIオブジェクトのリソースリークが発生します。

ExtractAssociatedIconEx()において、SHGetFileInfo()で取得したアイコンリソース を開放していないのが、原因のようです。

Ticket History (3/7 Histories)

2011-06-13 17:48 Updated by: None
  • New Ticket "ttpmenuでGDIオブジェクトのリソースリーク" created
2011-06-13 20:55 Updated by: (del#1144)
Comment

アプリケーション終了時にリソースを開放するようにしてみました。(アイコンのセット直前にしか開放していなかった)

http://ttssh2.sourceforge.jp/snapshot/ttpmenu.zip

再現環境がないので、これで改善されなかったらエラーの詳細を教えて頂けますか?

2011-06-24 14:32 Updated by: None
Comment

maya への返信

再現環境がないので、これで改善されなかったらエラーの詳細を教えて頂けますか?

早速のご対応ありがとうございます。
試してみましたが、状況はかわりませんでした。

現象は、ttpmenuを実行しているPCにおいて、画面の解像度等を変更する
(WM_DISPLAYCHANGEを受け取る)と発生します。
WM_DISPLAYCHANGEを受け取ると、InitListMenu()が呼ばれるのですが、
この中で実行されているExtractAssociatedIconEx()において、SHGetFileInfo()
で取得したアイコンリソースを開放していないので、リソースリーク
が発生します。

2011-06-24 17:31 Updated by: (del#1144)
Comment

http://sourceforge.jp/projects/ttssh2/svn/view/trunk/ttpmenu/ttpmenu.cpp?root=ttssh2&r1=4357&r2=4503

今回の修正前から、InitListMenu の中でアイコンリソースの開放をしています。今回の修正では、アプリケーション終了時にもリソースを開放するようにしました。

ExtractAssociatedIconExで取得したアイコンリソースは、トレイアイコンのExecuteメニューのサブメニューでの表示、およびList Configurationメニューを押したときのList Itemの表示に利用されているので、アプリケーションが終了するまで開放できないものと思います。

リモートデスクトップを使わず単純に画面の解像度変更をしてみましたが、こちらでは落ちることはありませんでした。

2011-06-25 00:48 Updated by: None
Comment

たびたびすみません。

リモートデスクトップを使わず単純に画面の解像度変更をしてみましたが、こちらでは落ちることはありませんでした。


ttpmenuが落ちるわけではなく、GDIリソースがリークします。
タスクマネージャでGDIリソースの項目を表示して、解像度を変更すると確認できます。

ExtractAssociatedIconExの中では、SHGetFileInfo()を実行し、CopyIconでhLargeIconや
hSmallIconにアイコンをコピーしています。

本来、コピー後、sfi.hIconをDestroyIconで開放しなくてはいけないのですが、実行されていません。

2011-06-26 20:34 Updated by: (del#1144)
  • Resolution Update from None to Fixed
Comment

r4512で修正しました。報告ありがとうございます

2011-07-25 22:54 Updated by: (del#1144)
  • Ticket Close date is changed to 2011-07-25 22:54
  • Status Update from Open to Closed

Attachment File List

No attachments

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login