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 @@
a small handful of recorded stack traces.
@param backtraceDepth value indicating the maximum backtrace depth; must be > 0
@since LibreOffice 6.0
*/
#if defined LIBO_INTERNAL_ONLY
namespace sal {
struct BacktraceState {
void** buffer;
int nDepth;
~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_DLLPUBLIC OUString SAL_CALL sal_backtrace_to_string(
BacktraceState* backtraceState);
SAL_DLLPUBLIC OUString backtrace_to_string(BacktraceState* backtraceState);
}
#endif
......
......@@ -59,7 +59,7 @@ OUString osl::detail::backtraceAsString(sal_uInt32 maxDepth) {
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);
auto const maxInt = static_cast<unsigned int>(
......@@ -72,7 +72,7 @@ std::unique_ptr<BacktraceState> sal_backtrace_get(sal_uInt32 maxDepth)
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));
if (b2.buffer == nullptr) {
......
......@@ -65,7 +65,7 @@ OUString osl::detail::backtraceAsString(sal_uInt32 maxDepth)
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);
auto const maxUlong = std::numeric_limits<ULONG>::max();
......@@ -87,7 +87,7 @@ std::unique_ptr<BacktraceState> sal_backtrace_get(sal_uInt32 maxDepth)
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;
......
......@@ -735,8 +735,8 @@ PRIVATE_1.3 { # LibreOffice 5.4
PRIVATE_1.4 { # LibreOffice 6.0
global:
_Z17sal_backtrace_getj;
_Z23sal_backtrace_to_stringP14BacktraceState;
_ZN3sal13backtrace_getEj;
_ZN3sal19backtrace_to_stringEPNS_14BacktraceStateE;
} PRIVATE_1.3;
PRIVATE_textenc.1 { # LibreOffice 3.6
......
......@@ -35,7 +35,8 @@ struct SfxListener::Impl
{
SfxBroadcasterArr_Impl maBCs;
#ifdef DBG_UTIL
std::map<SfxBroadcaster*, std::unique_ptr<BacktraceState>> maCallStacks;
std::map<SfxBroadcaster*, std::unique_ptr<sal::BacktraceState>>
maCallStacks;
#endif
};
......@@ -95,7 +96,7 @@ void SfxListener::StartListening( SfxBroadcaster& rBroadcaster, bool bPreventDup
if (bListeningAlready && !bPreventDuplicates)
{
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
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
rBroadcaster.AddListener(*this);
mpImpl->maBCs.push_back( &rBroadcaster );
#ifdef DBG_UTIL
mpImpl->maCallStacks.emplace( &rBroadcaster, sal_backtrace_get(10) );
mpImpl->maCallStacks.emplace( &rBroadcaster, sal::backtrace_get(10) );
#endif
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