From 97c5b38243bfa51ecf6a82c7043099c188b402af Mon Sep 17 00:00:00 2001 From: "timeless%mozdev.org" Date: Mon, 8 Mar 2004 07:47:44 +0000 Subject: [PATCH] Bug 190766 nsStackFrameUnix.cpp crashes on Solaris [@ write_address_file] r=dbaron git-svn-id: svn://10.0.0.236/trunk@153669 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/xpcom/base/nsStackFrameUnix.cpp | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/mozilla/xpcom/base/nsStackFrameUnix.cpp b/mozilla/xpcom/base/nsStackFrameUnix.cpp index 5a5c3351c87..45f316c4708 100644 --- a/mozilla/xpcom/base/nsStackFrameUnix.cpp +++ b/mozilla/xpcom/base/nsStackFrameUnix.cpp @@ -243,31 +243,27 @@ write_address_file(void * pc, FILE* aStream) } else { char buffer[4096], dembuff[4096]; Dl_info info; - char *func, *lib; + const char *func = "??", *lib = "??"; ptr->next = newbucket(pc); mutex_unlock(&lock); - if (dladdr(pc, & info) == 0) { - func = "??"; - lib = "??"; - } else { - lib = (char *) info.dli_fname; - func = (char *) info.dli_sname; + if (dladdr(pc, & info)) { + if (info.dli_fname) + lib = info.dli_fname; + if (info.dli_sname) + func = info.dli_sname; } #ifdef __GNUC__ DemangleSymbol(func, dembuff, sizeof(dembuff)); +#else + if (!demf || demf(func, dembuff, sizeof (dembuff))) + dembuff[0] = 0; +#endif /*__GNUC__*/ if (strlen(dembuff)) { func = dembuff; } -#else - if (demf) { - if (demf(func, dembuff, sizeof (dembuff)) == 0) - func = dembuff; - } -#endif /*__GNUC__*/ - fprintf(aStream, "%u %s:%s+0x%x\n", ptr->next->index, lib,