Menu

#690 CPropCommon派生クラスのメンバ変数

None
closed
nobody
None
5
2013-11-26
2013-11-04
novice123
No

CPropCommon派生クラスで宣言している変数をCPropCommonクラスに移動しました。

・CPropHelper
m_hKeywordHelpFont

・CPropTab
m_hTabFont

派生クラスに変数があると、
CPropCommonクラスを動的に生成するようしたときに
"HEAP CORRUPTION DETECTED"が発生しました。

1 Attachments

Discussion

  • novice123

    novice123 - 2013-11-06

    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]

  • novice123

    novice123 - 2013-11-07

    assertの場所を移動しました。

     
  • novice123

    novice123 - 2013-11-07

    [r3437]でcommitしました。

     

    Related

    Commit: [r3437]

  • novice123

    novice123 - 2013-11-09

    CPropTypesクラスにもassertを追加しました。

     
  • novice123

    novice123 - 2013-11-10

    [r3440]でcommitしました。

     

    Related

    Commit: [r3440]

  • Moca

    Moca - 2013-11-26
    • status: open --> closed
    • Group: -->
     

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.