From 6916237279350ccdd418274dc094ecc985018ee8 Mon Sep 17 00:00:00 2001 From: Lang Hames Date: Tue, 26 Jun 2018 20:59:50 +0000 Subject: [PATCH] [ORC] Reset AsynchronousSymbolQuery's NotifySymbolsResolved callback on error. AsynchronousSymbolQuery::canStillFail checks the value of the callback to prevent sending it redundant error notifications, so we need to reset it after running it. llvm-svn: 335664 --- lib/ExecutionEngine/Orc/Core.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/ExecutionEngine/Orc/Core.cpp b/lib/ExecutionEngine/Orc/Core.cpp index 5d28c882076..53e4a853b35 100644 --- a/lib/ExecutionEngine/Orc/Core.cpp +++ b/lib/ExecutionEngine/Orc/Core.cpp @@ -196,13 +196,14 @@ void AsynchronousSymbolQuery::handleFailed(Error Err) { assert(QueryRegistrations.empty() && ResolvedSymbols.empty() && NotYetResolvedCount == 0 && NotYetReadyCount == 0 && "Query should already have been abandoned"); - if (NotifySymbolsResolved) + if (NotifySymbolsResolved) { NotifySymbolsResolved(std::move(Err)); - else { + NotifySymbolsResolved = SymbolsResolvedCallback(); + } else { assert(NotifySymbolsReady && "Failed after both callbacks issued?"); NotifySymbolsReady(std::move(Err)); - NotifySymbolsReady = SymbolsReadyCallback(); } + NotifySymbolsReady = SymbolsReadyCallback(); } void AsynchronousSymbolQuery::addQueryDependence(VSO &V, SymbolStringPtr Name) {