Ticket #25417

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

Date d'ouverture: 2011-06-13 17:48 Dernière mise à jour: 2011-07-25 22:54

Rapporteur:
(Anonyme)
Propriétaire:
(Aucun)
Type:
État:
Atteints
Composant:
Jalon:
(Aucun)
Priorité:
5 - moyen
Sévérité:
5 - moyen
Résolution:
Fixed
Fichier:
Aucun
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Détails

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)
Commentaire

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

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

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

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

maya への返信

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

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

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

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

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
Commentaire

たびたびすみません。

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


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

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

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

2011-06-26 20:34 Updated by: (del#1144)
  • Résolution Update from Aucun to Fixed
Commentaire

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

2011-07-25 22:54 Updated by: (del#1144)
  • État Update from Ouvert to Atteints
  • Ticket Close date is changed to 2011-07-25 22:54

Attachment File List

No attachments

Modifier

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