diff options
author | Christian 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) |
commit | 8d0f9c8819f0b6fa8b2801909ba343f5407d8b67 (patch) | |
tree | 5108e797feb59391ef093e43e3cfaf5338dcdc77 | |
parent | 7e66514ee0e1d7ef5b02ac09e789fccc11728db4 (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-- | ChangeLog | 8 | ||||
-rw-r--r-- | configure.ac | 5 | ||||
-rw-r--r-- | lib/ev-debug.c | 6 |
3 files changed, 19 insertions, 0 deletions
@@ -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) { |