Skip to content

Commit 2911abe

Browse files
committed
use make_scope_exit
1 parent 32fa093 commit 2911abe

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

lldb/source/Target/Target.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2286,6 +2286,9 @@ Target::GetScratchTypeSystemForLanguage(lldb::LanguageType language,
22862286
// thread) is holding a read lock to the scratch context and
22872287
// replacing it could cause a use-after-free later on.
22882288
if (GetSwiftScratchContextLock().try_lock()) {
2289+
auto unlock = llvm::make_scope_exit([this] {
2290+
GetSwiftScratchContextLock().unlock();
2291+
});
22892292
if (m_use_scratch_typesystem_per_module)
22902293
DisplayFallbackSwiftContextErrors(swift_ast_ctx);
22912294
else if (StreamSP errs = GetDebugger().GetAsyncErrorStream()) {
@@ -2309,10 +2312,8 @@ Target::GetScratchTypeSystemForLanguage(lldb::LanguageType language,
23092312
m_scratch_type_system_map.RemoveTypeSystemsForLanguage(language);
23102313
type_system_or_err = m_scratch_type_system_map.GetTypeSystemForLanguage(
23112314
language, this, create_on_demand, compiler_options);
2312-
if (!type_system_or_err) {
2313-
GetSwiftScratchContextLock().unlock();
2315+
if (!type_system_or_err)
23142316
return type_system_or_err.takeError();
2315-
}
23162317

23172318
if (auto *new_swift_ast_ctx =
23182319
llvm::dyn_cast_or_null<SwiftASTContextForExpressions>(
@@ -2337,7 +2338,6 @@ Target::GetScratchTypeSystemForLanguage(lldb::LanguageType language,
23372338
llvm::make_error<llvm::StringError>("DIAF", llvm::inconvertibleErrorCode());
23382339
}
23392340
}
2340-
GetSwiftScratchContextLock().unlock();
23412341
}
23422342
}
23432343
} else if (create_on_demand) {

0 commit comments

Comments
 (0)