diff options
author | David Schulz <david.schulz@theqtcompany.com> | 2015-12-04 14:36:04 +0100 |
---|---|---|
committer | David Schulz <david.schulz@theqtcompany.com> | 2015-12-07 08:32:47 +0000 |
commit | ea8665c2e22e22de13c87d3a00be7357cc0f4ec5 (patch) | |
tree | 98abf0bc85df69b9202d992ef330c46dfbbefc95 | |
parent | 2714a7e981c26bf868f7ea904fcd282bf2e00853 (diff) |
CdbExtension: Make sure watches group is initialized.
This fixes a crash that occurs when a debugger was started
without an active watch and a watch were added afterwards.
Change-Id: I0219a750bae7b433240b22f99b2e8fd8655ca331
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
-rw-r--r-- | src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp b/src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp index 5fce7aa989..0f0aea6e07 100644 --- a/src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp +++ b/src/libs/qtcreatorcdbext/qtcreatorcdbextension.cpp @@ -513,14 +513,16 @@ static std::string commandLocals(ExtensionCommandContext &commandExtCtx,PCSTR ar if (watchSynchronization) { watchesSymbolGroup = 0; extCtx.discardWatchesSymbolGroup(); - if (!watcherInameExpressionMap.empty()) { - // Force group into existence - watchesSymbolGroup = extCtx.watchesSymbolGroup(commandExtCtx.symbols(), errorMessage); - if (!watchesSymbolGroup || !watchesSymbolGroup->synchronize(commandExtCtx.symbols(), - watcherInameExpressionMap, - errorMessage)) { - return std::string(); - } + } + + if (watchesSymbolGroup == 0 + && (!watcherInameExpressionMap.empty() || WatchesSymbolGroup::isWatchIname(iname))) { + // Force group into existence + watchesSymbolGroup = extCtx.watchesSymbolGroup(commandExtCtx.symbols(), errorMessage); + if (!watchesSymbolGroup || !watchesSymbolGroup->synchronize(commandExtCtx.symbols(), + watcherInameExpressionMap, + errorMessage)) { + return std::string(); } } |