]> git.saurik.com Git - wxWidgets.git/blobdiff - src/unix/stackwalk.cpp
don't compare invalid iterators/node pointers
[wxWidgets.git] / src / unix / stackwalk.cpp
index 9ad52db9e6a253dd8733afa415552bad40638097..ae48c30a31cbd3b0a81433e6672901879abd0923 100644 (file)
@@ -129,9 +129,13 @@ void wxStackFrame::OnGetName()
                     m_offset = ofs;
             }
         }
-    }
 
-    m_module.assign(syminfo, posOpen);
+        m_module.assign(syminfo, posOpen);
+    }
+    else // not in "module(funcname+offset)" format
+    {
+        m_module = syminfo;
+    }
 }
 
 void wxStackFrame::OnGetLocation()
@@ -221,9 +225,13 @@ void wxStackWalker::Walk(size_t skip)
 
     char **symbols = backtrace_symbols(addresses, depth);
 
-    for ( int n = 0; n < depth; n++ )
+    // we have 3 more "intermediate" frames which the calling code doesn't know
+    // about., account for them
+    skip += 3;
+
+    for ( int n = skip; n < depth; n++ )
     {
-        wxStackFrame frame(n, addresses[n], symbols[n]);
+        wxStackFrame frame(n - skip, addresses[n], symbols[n]);
         OnStackFrame(frame);
     }
 }