From 36f126fd5a352cb25f196d1cbb428374954321a7 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Sat, 2 Aug 2014 20:10:15 -0400 Subject: [PATCH] Debugger: Fix #11088. - When walking through and querying volumes for a missing source file, store the error and report it back in the completion message rather than exiting the query worker. Otherwise, if something went wrong with the queries, it'd potentially occur that we'd never prompt the user to locate the file, as the UI would never be notified that the background work was complete. --- .../user_interface/gui/team_window/TeamWindow.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp index bdf41d752d..c10c6947d3 100644 --- a/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp +++ b/src/apps/debugger/user_interface/gui/team_window/TeamWindow.cpp @@ -385,6 +385,8 @@ TeamWindow::MessageReceived(BMessage* message) break; _HandleResolveMissingSourceFile(locatedPath); + delete fFilePanel; + fFilePanel = NULL; break; } case MSG_LOCATE_SOURCE_IF_NEEDED: @@ -395,10 +397,10 @@ TeamWindow::MessageReceived(BMessage* message) case MSG_SOURCE_ENTRY_QUERY_COMPLETE: { BStringList* entries; - if (message->FindPointer("entries", (void**)&entries) != B_OK) - break; - ObjectDeleter entryDeleter(entries); - _HandleLocateSourceRequest(entries); + if (message->FindPointer("entries", (void**)&entries) == B_OK) { + ObjectDeleter entryDeleter(entries); + _HandleLocateSourceRequest(entries); + } fActiveSourceWorker = -1; break; } @@ -1568,14 +1570,13 @@ TeamWindow::_RetrieveMatchingSourceWorker(void* arg) window->Unlock(); status_t error = window->_RetrieveMatchingSourceEntries(path, entries); - if (error != B_OK) - return error; entries->Sort(); BMessenger messenger(window); if (messenger.IsValid() && messenger.LockTarget()) { if (window->fActiveSourceWorker == find_thread(NULL)) { BMessage message(MSG_SOURCE_ENTRY_QUERY_COMPLETE); + message.AddInt32("error", error); message.AddPointer("entries", entries); if (messenger.SendMessage(&message) == B_OK) stringListDeleter.Detach();