Skip to content

Commit 86111c7

Browse files
committed
more fixes
1 parent a706b8a commit 86111c7

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

xptifw/src/xpti_trace_framework.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -993,7 +993,17 @@ class Framework {
993993
}
994994

995995
private:
996+
friend void ::xptiFrameworkFinalize();
997+
998+
static Framework *release() {
999+
Framework *TmpFramework = MInstance.load(std::memory_order_relaxed);
1000+
MInstance.store(nullptr, std::memory_order_relaxed);
1001+
return TmpFramework;
1002+
}
1003+
1004+
/// Stores singleton instance
9961005
static std::atomic<Framework *> MInstance;
1006+
/// Trivially destructible mutex for double-checked lock idiom
9971007
static utils::SpinLock MSingletoneMutex;
9981008
/// Thread-safe counter used for generating universal IDs
9991009
xpti::safe_uint64_t MUniversalIDs;
@@ -1031,7 +1041,9 @@ XPTI_EXPORT_API void xptiFrameworkFinalize() {
10311041

10321042
xpti::GFrameworkReferenceCounter--;
10331043
if (xpti::GFrameworkReferenceCounter == 0) {
1034-
delete &xpti::Framework::instance();
1044+
xpti::Framework *FW = xpti::Framework::release();
1045+
if (FW)
1046+
delete FW;
10351047
}
10361048
}
10371049

0 commit comments

Comments
 (0)