Kaydet (Commit) 796c494d authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Clean up sal/backtrace.hxx

Change-Id: Id78e9c0ca29ff2e52591f3d446431ac23c20ab7a
Reviewed-on: https://gerrit.libreoffice.org/41926Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarStephan Bergmann <sbergman@redhat.com>
üst 176a7238
...@@ -23,20 +23,25 @@ ...@@ -23,20 +23,25 @@
a small handful of recorded stack traces. a small handful of recorded stack traces.
@param backtraceDepth value indicating the maximum backtrace depth; must be > 0 @param backtraceDepth value indicating the maximum backtrace depth; must be > 0
@since LibreOffice 6.0
*/ */
#if defined LIBO_INTERNAL_ONLY #if defined LIBO_INTERNAL_ONLY
namespace sal {
struct BacktraceState { struct BacktraceState {
void** buffer; void** buffer;
int nDepth; int nDepth;
~BacktraceState() {delete[] buffer;} ~BacktraceState() {delete[] buffer;}
}; };
SAL_DLLPUBLIC std::unique_ptr<BacktraceState> SAL_CALL sal_backtrace_get( SAL_DLLPUBLIC std::unique_ptr<BacktraceState> backtrace_get(
sal_uInt32 backtraceDepth); sal_uInt32 backtraceDepth);
SAL_DLLPUBLIC OUString SAL_CALL sal_backtrace_to_string( SAL_DLLPUBLIC OUString backtrace_to_string(BacktraceState* backtraceState);
BacktraceState* backtraceState);
}
#endif #endif
......
...@@ -59,7 +59,7 @@ OUString osl::detail::backtraceAsString(sal_uInt32 maxDepth) { ...@@ -59,7 +59,7 @@ OUString osl::detail::backtraceAsString(sal_uInt32 maxDepth) {
return b3.makeStringAndClear(); return b3.makeStringAndClear();
} }
std::unique_ptr<BacktraceState> sal_backtrace_get(sal_uInt32 maxDepth) std::unique_ptr<sal::BacktraceState> sal::backtrace_get(sal_uInt32 maxDepth)
{ {
assert(maxDepth != 0); assert(maxDepth != 0);
auto const maxInt = static_cast<unsigned int>( auto const maxInt = static_cast<unsigned int>(
...@@ -72,7 +72,7 @@ std::unique_ptr<BacktraceState> sal_backtrace_get(sal_uInt32 maxDepth) ...@@ -72,7 +72,7 @@ std::unique_ptr<BacktraceState> sal_backtrace_get(sal_uInt32 maxDepth)
return std::unique_ptr<BacktraceState>(new BacktraceState{ b1, n }); return std::unique_ptr<BacktraceState>(new BacktraceState{ b1, n });
} }
OUString sal_backtrace_to_string(BacktraceState* backtraceState) OUString sal::backtrace_to_string(BacktraceState* backtraceState)
{ {
FreeGuard b2(backtrace_symbols(backtraceState->buffer, backtraceState->nDepth)); FreeGuard b2(backtrace_symbols(backtraceState->buffer, backtraceState->nDepth));
if (b2.buffer == nullptr) { if (b2.buffer == nullptr) {
......
...@@ -65,7 +65,7 @@ OUString osl::detail::backtraceAsString(sal_uInt32 maxDepth) ...@@ -65,7 +65,7 @@ OUString osl::detail::backtraceAsString(sal_uInt32 maxDepth)
return aBuf.makeStringAndClear(); return aBuf.makeStringAndClear();
} }
std::unique_ptr<BacktraceState> sal_backtrace_get(sal_uInt32 maxDepth) std::unique_ptr<sal::BacktraceState> sal::backtrace_get(sal_uInt32 maxDepth)
{ {
assert(maxDepth != 0); assert(maxDepth != 0);
auto const maxUlong = std::numeric_limits<ULONG>::max(); auto const maxUlong = std::numeric_limits<ULONG>::max();
...@@ -87,7 +87,7 @@ std::unique_ptr<BacktraceState> sal_backtrace_get(sal_uInt32 maxDepth) ...@@ -87,7 +87,7 @@ std::unique_ptr<BacktraceState> sal_backtrace_get(sal_uInt32 maxDepth)
return std::unique_ptr<BacktraceState>(new BacktraceState{ pStack, nFrames }); return std::unique_ptr<BacktraceState>(new BacktraceState{ pStack, nFrames });
} }
OUString sal_backtrace_to_string(BacktraceState* backtraceState) OUString sal::backtrace_to_string(BacktraceState* backtraceState)
{ {
OUStringBuffer aBuf; OUStringBuffer aBuf;
......
...@@ -735,8 +735,8 @@ PRIVATE_1.3 { # LibreOffice 5.4 ...@@ -735,8 +735,8 @@ PRIVATE_1.3 { # LibreOffice 5.4
PRIVATE_1.4 { # LibreOffice 6.0 PRIVATE_1.4 { # LibreOffice 6.0
global: global:
_Z17sal_backtrace_getj; _ZN3sal13backtrace_getEj;
_Z23sal_backtrace_to_stringP14BacktraceState; _ZN3sal19backtrace_to_stringEPNS_14BacktraceStateE;
} PRIVATE_1.3; } PRIVATE_1.3;
PRIVATE_textenc.1 { # LibreOffice 3.6 PRIVATE_textenc.1 { # LibreOffice 3.6
......
...@@ -35,7 +35,8 @@ struct SfxListener::Impl ...@@ -35,7 +35,8 @@ struct SfxListener::Impl
{ {
SfxBroadcasterArr_Impl maBCs; SfxBroadcasterArr_Impl maBCs;
#ifdef DBG_UTIL #ifdef DBG_UTIL
std::map<SfxBroadcaster*, std::unique_ptr<BacktraceState>> maCallStacks; std::map<SfxBroadcaster*, std::unique_ptr<sal::BacktraceState>>
maCallStacks;
#endif #endif
}; };
...@@ -95,7 +96,7 @@ void SfxListener::StartListening( SfxBroadcaster& rBroadcaster, bool bPreventDup ...@@ -95,7 +96,7 @@ void SfxListener::StartListening( SfxBroadcaster& rBroadcaster, bool bPreventDup
if (bListeningAlready && !bPreventDuplicates) if (bListeningAlready && !bPreventDuplicates)
{ {
auto f = mpImpl->maCallStacks.find( &rBroadcaster ); auto f = mpImpl->maCallStacks.find( &rBroadcaster );
SAL_WARN("svl", "previous StartListening call came from: " << sal_backtrace_to_string(f->second.get())); SAL_WARN("svl", "previous StartListening call came from: " << sal::backtrace_to_string(f->second.get()));
} }
#endif #endif
assert(!(bListeningAlready && !bPreventDuplicates) && "duplicate listener, try building with DBG_UTIL to find the other insert site."); assert(!(bListeningAlready && !bPreventDuplicates) && "duplicate listener, try building with DBG_UTIL to find the other insert site.");
...@@ -105,7 +106,7 @@ void SfxListener::StartListening( SfxBroadcaster& rBroadcaster, bool bPreventDup ...@@ -105,7 +106,7 @@ void SfxListener::StartListening( SfxBroadcaster& rBroadcaster, bool bPreventDup
rBroadcaster.AddListener(*this); rBroadcaster.AddListener(*this);
mpImpl->maBCs.push_back( &rBroadcaster ); mpImpl->maBCs.push_back( &rBroadcaster );
#ifdef DBG_UTIL #ifdef DBG_UTIL
mpImpl->maCallStacks.emplace( &rBroadcaster, sal_backtrace_get(10) ); mpImpl->maCallStacks.emplace( &rBroadcaster, sal::backtrace_get(10) );
#endif #endif
assert(IsListening(rBroadcaster) && "StartListening failed"); assert(IsListening(rBroadcaster) && "StartListening failed");
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment