Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Persch <chpe@cvs.gnome.org>2005-08-29 20:40:07 (GMT)
committer Christian Persch <chpe@src.gnome.org>2005-08-29 20:40:07 (GMT)
commit8d0f9c8819f0b6fa8b2801909ba343f5407d8b67 (patch)
tree5108e797feb59391ef093e43e3cfaf5338dcdc77
parent7e66514ee0e1d7ef5b02ac09e789fccc11728db4 (diff)
Check for execinfo.h and use it only if it exists.
2005-08-29 Christian Persch <chpe@cvs.gnome.org> * configure.ac: * lib/ev-debug.c: (trap_handler): Check for execinfo.h and use it only if it exists.
-rw-r--r--ChangeLog8
-rw-r--r--configure.ac5
-rw-r--r--lib/ev-debug.c6
3 files changed, 19 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 9e6d3a9..237cc6f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2005-08-29 Christian Persch <chpe@cvs.gnome.org>
+
+ * configure.ac:
+ * lib/ev-debug.c: (trap_handler):
+
+ Check for execinfo.h and use it only if it exists.
+ Ported from Epiphany (bug #314776).
+
2005-08-29 Duarte Loreto <happyguy_pt@hotmail.com>
* configure.ac: Added Portuguese (pt) to ALL_LINGUAS.
diff --git a/configure.ac b/configure.ac
index c76946a..2050b1c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -130,6 +130,11 @@ if test "x$GCONFTOOL" = "xno"; then
AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf])
fi
+dnl ================== portability checks ===========================================
+
+dnl for backtrace()
+AC_CHECK_HEADERS([execinfo.h])
+
dnl ================== ggv checks ===================================================
AC_ARG_WITH(gs-pkg,
[ --with-gs=dir Directory Where GhostScript package is installed.])
diff --git a/lib/ev-debug.c b/lib/ev-debug.c
index 8648e2d..0173a7d 100644
--- a/lib/ev-debug.c
+++ b/lib/ev-debug.c
@@ -29,7 +29,9 @@
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
+#ifdef HAVE_EXECINFO_H
#include <execinfo.h>
+#endif
static GHashTable *ev_profilers_hash = NULL;
static const char *ev_profile_modules = NULL;
@@ -98,11 +100,15 @@ trap_handler (const char *log_domain,
{
if (strcmp (ev_debug_break, "stack") == 0)
{
+#ifdef HAVE_EXECINFO_H
void *array[MAX_DEPTH];
size_t size;
size = backtrace (array, MAX_DEPTH);
backtrace_symbols_fd (array, size, 2);
+#else
+ g_on_error_stack_trace (g_get_prgname ());
+#endif
}
else if (strcmp (ev_debug_break, "trap") == 0)
{