任务单 #25417

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

开放日期: 2011-06-13 17:48 最后更新: 2011-07-25 22:54

报告人:
(匿名)
属主:
(无)
类型:
状态:
关闭
组件:
里程碑:
(无)
优先:
5 - Medium
严重性:
5 - Medium
处理结果:
Fixed
文件:
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Details

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

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

任务单历史 (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)
评论

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

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

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

2011-06-24 14:32 Updated by: None
评论

maya への返信

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

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

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

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

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
评论

たびたびすみません。

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


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

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

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

2011-06-26 20:34 Updated by: (del#1144)
  • 处理结果 Update from to Fixed
评论

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

2011-07-25 22:54 Updated by: (del#1144)
  • 状态 Update from 开启 to 关闭
  • Ticket Close date is changed to 2011-07-25 22:54

Attachment File List

No attachments

编辑

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