CPropCommon派生クラスで宣言している変数をCPropCommonクラスに移動しました。
・CPropHelper m_hKeywordHelpFont
・CPropTab m_hTabFont
派生クラスに変数があると、 CPropCommonクラスを動的に生成するようしたときに "HEAP CORRUPTION DETECTED"が発生しました。
m_hKeywordHelpFont、m_hTabFontがどこのアドレスにあるのかをデバッガで調べてみました。 (CPropCommon派生クラスは生成されないので、上記変数に割り当てた領域はは存在しない)
&m_hTabFont=0x07756e80 &m_hKeywordHelpFont=0x07766e80 &m_cPropCommon=0x07590040 &m_cPropTypes=0x07766e80
CPropertyManagerクラスで CPropCommon m_cPropCommon; CPropTypes m_cPropTypes; のように定義しているので、m_cPropTypesのアドレスを指していました。
m_cPropCommon.DoPropertySheet()を呼び出すと、 m_cPropTypes.m_hInstance=0に上書きされていました。 (WM_DESTROYが呼ばれたときにNULLが設定されます)
また、m_hKeywordHelpFontとm_hTabFontが同じアドレスを指しているので SetFontLabel()の結果が上書きされていました(DeleteObject()が正常に動作しない)。
[r2935]から発生するようです。
Commit: [r2935]
assertの場所を移動しました。
[r3437]でcommitしました。
Commit: [r3437]
CPropTypesクラスにもassertを追加しました。
[r3440]でcommitしました。
Commit: [r3440]
Log in to post a comment.
m_hKeywordHelpFont、m_hTabFontがどこのアドレスにあるのかをデバッガで調べてみました。
(CPropCommon派生クラスは生成されないので、上記変数に割り当てた領域はは存在しない)
&m_hTabFont=0x07756e80
&m_hKeywordHelpFont=0x07766e80
&m_cPropCommon=0x07590040
&m_cPropTypes=0x07766e80
CPropertyManagerクラスで
CPropCommon m_cPropCommon;
CPropTypes m_cPropTypes;
のように定義しているので、m_cPropTypesのアドレスを指していました。
m_cPropCommon.DoPropertySheet()を呼び出すと、
m_cPropTypes.m_hInstance=0に上書きされていました。
(WM_DESTROYが呼ばれたときにNULLが設定されます)
また、m_hKeywordHelpFontとm_hTabFontが同じアドレスを指しているので
SetFontLabel()の結果が上書きされていました(DeleteObject()が正常に動作しない)。
[r2935]から発生するようです。
Related
Commit: [r2935]
assertの場所を移動しました。
[r3437]でcommitしました。
Related
Commit: [r3437]
CPropTypesクラスにもassertを追加しました。
[r3440]でcommitしました。
Related
Commit: [r3440]