Skip to content

Commit 21e5a7e

Browse files
committed
[Metadata reader] Save/restore symbolic reference resolver
… rather than clearing it out completely. This is better hygiene, although it doesn’t matter right now.
1 parent 23886ba commit 21e5a7e

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

include/swift/Demangling/Demangler.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,13 @@ class Demangler : public NodeFactory {
507507
std::function<SymbolicReferenceResolver_t> resolver) {
508508
SymbolicReferenceResolver = resolver;
509509
}
510-
510+
511+
/// Take the symbolic reference resolver.
512+
std::function<SymbolicReferenceResolver_t> &&
513+
takeSymbolicReferenceResolver() {
514+
return std::move(SymbolicReferenceResolver);
515+
}
516+
511517
/// Demangle the given symbol and return the parse tree.
512518
///
513519
/// \param MangledName The mangled symbol string, which start with the

include/swift/Remote/MetadataReader.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1521,6 +1521,7 @@ class MetadataReader {
15211521
}
15221522

15231523
// Install our own symbolic reference resolver
1524+
auto oldSymbolicReferenceResolver = dem.takeSymbolicReferenceResolver();
15241525
dem.setSymbolicReferenceResolver([&](SymbolicReferenceKind kind,
15251526
Directness directness,
15261527
int32_t offset,
@@ -1562,7 +1563,7 @@ class MetadataReader {
15621563
break;
15631564
}
15641565

1565-
dem.setSymbolicReferenceResolver(nullptr);
1566+
dem.setSymbolicReferenceResolver(std::move(oldSymbolicReferenceResolver));
15661567
return result;
15671568
}
15681569

0 commit comments

Comments
 (0)