aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@theqtcompany.com>2015-12-04 14:36:04 +0100
committerDavid Schulz <david.schulz@theqtcompany.com>2015-12-07 08:32:47 +0000
commitea8665c2e22e22de13c87d3a00be7357cc0f4ec5 (patch)
tree98abf0bc85df69b9202d992ef330c46dfbbefc95
parent2714a7e981c26bf868f7ea904fcd282bf2e00853 (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.cpp18
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();
}
}