diff --git a/pykd/dbgext.cpp b/pykd/dbgext.cpp index 6ee2ab6..e44c759 100644 --- a/pykd/dbgext.cpp +++ b/pykd/dbgext.cpp @@ -261,6 +261,48 @@ SetupDebugEngine( IDebugClient4 *client, DbgExt *dbgExt ) client->QueryInterface( __uuidof(IDebugSystemObjects2), (void**)&dbgExt->system2 ); } +DbgExt::~DbgExt() +{ + if ( client ) + client->Release(); + + if ( client4 ) + client4->Release(); + + if ( control ) + control->Release(); + + if ( control4 ) + control4->Release(); + + if ( registers ) + registers->Release(); + + if ( symbols ) + symbols->Release(); + + if ( symbols2 ) + symbols2->Release(); + + if ( symbols3 ) + symbols3->Release(); + + if ( dataSpaces ) + dataSpaces->Release(); + + if ( dataSpaces4 ) + dataSpaces4->Release(); + + if ( advanced2 ) + advanced2->Release(); + + if ( system ) + system->Release(); + + if ( system2 ) + system2->Release(); +} + ///////////////////////////////////////////////////////////////////////////////// HRESULT @@ -273,7 +315,7 @@ py( PDEBUG_CLIENT4 client, PCSTR args) try { - DbgExt ext = { 0 }; + DbgExt ext; SetupDebugEngine( client, &ext ); dbgExt = &ext; @@ -389,8 +431,7 @@ pycmd( PDEBUG_CLIENT4 client, PCSTR args ) { try { - - DbgExt ext = { 0 }; + DbgExt ext; SetupDebugEngine( client, &ext ); dbgExt = &ext; @@ -491,7 +532,7 @@ HRESULT CALLBACK pythonpath( PDEBUG_CLIENT4 client, PCSTR args ) { - DbgExt ext = { 0 }; + DbgExt ext; SetupDebugEngine( client, &ext ); dbgExt = &ext; diff --git a/pykd/dbgext.h b/pykd/dbgext.h index 7553491..d3c3e84 100644 --- a/pykd/dbgext.h +++ b/pykd/dbgext.h @@ -24,6 +24,24 @@ struct DbgExt { IDebugSystemObjects *system; IDebugSystemObjects2 *system2; + + DbgExt() : + client( NULL ), + client4( NULL ), + control( NULL ), + control4( NULL ), + registers( NULL ), + symbols( NULL ), + symbols2( NULL ), + symbols3( NULL ), + dataSpaces( NULL ), + dataSpaces4( NULL ), + advanced2( NULL ), + system( NULL ), + system2( NULL ) + {} + + ~DbgExt(); }; extern DbgExt *dbgExt; diff --git a/pykd/dbgsession.cpp b/pykd/dbgsession.cpp index 93fab2c..888ae4f 100644 --- a/pykd/dbgsession.cpp +++ b/pykd/dbgsession.cpp @@ -4,7 +4,7 @@ #include "dbgeventcb.h" #include "dbgsession.h" -DbgExt dbgGlobalSession = { 0 }; +DbgExt dbgGlobalSession; bool dbgSessionStarted = false;