diff options
author | Havoc Pennington <hp@redhat.com> | 2003-03-16 21:01:57 +0000 |
---|---|---|
committer | Havoc Pennington <hp@redhat.com> | 2003-03-16 21:01:57 +0000 |
commit | d1f65c6c4f9dd9750f9ad3eda5b590a4ffca6498 (patch) | |
tree | a5e6728794bc55602755fc7fff1eb51613222ade /dbus | |
parent | ebb57e719c32becd95a1efe3dd269c21e5a011b6 (diff) |
2003-03-16 Havoc Pennington <hp@pobox.com>
* dbus/dbus-bus.c (ensure_bus_data): handle failure to set
connection data
* dbus/dbus-memory.c (_dbus_initialize_malloc_debug): support
DBUS_MALLOC_BACKTRACES to print trace when failing an alloc
Diffstat (limited to 'dbus')
-rw-r--r-- | dbus/dbus-bus.c | 9 | ||||
-rw-r--r-- | dbus/dbus-memory.c | 9 |
2 files changed, 16 insertions, 2 deletions
diff --git a/dbus/dbus-bus.c b/dbus/dbus-bus.c index 84434888..8f7fb90e 100644 --- a/dbus/dbus-bus.c +++ b/dbus/dbus-bus.c @@ -146,8 +146,13 @@ ensure_bus_data (DBusConnection *connection) return NULL; } - dbus_connection_set_data (connection, bus_data_slot, bd, - bus_data_free); + if (!dbus_connection_set_data (connection, bus_data_slot, bd, + bus_data_free)) + { + bus_data_free (bd); + data_slot_unref (); + return NULL; + } /* Data slot refcount now held by the BusData */ } diff --git a/dbus/dbus-memory.c b/dbus/dbus-memory.c index f7c43f5c..26766c0c 100644 --- a/dbus/dbus-memory.c +++ b/dbus/dbus-memory.c @@ -80,6 +80,7 @@ static size_t fail_size = 0; static int fail_alloc_counter = _DBUS_INT_MAX; static dbus_bool_t guards = FALSE; static dbus_bool_t disable_mem_pools = FALSE; +static dbus_bool_t backtrace_on_fail_alloc = FALSE; /** value stored in guard padding for debugging buffer overrun */ #define GUARD_VALUE 0xdeadbeef @@ -126,6 +127,12 @@ _dbus_initialize_malloc_debug (void) disable_mem_pools = TRUE; _dbus_verbose ("Will disable memory pools\n"); } + + if (_dbus_getenv ("DBUS_MALLOC_BACKTRACES") != NULL) + { + backtrace_on_fail_alloc = TRUE; + _dbus_verbose ("Will backtrace on failing a malloc\n"); + } } } @@ -196,6 +203,8 @@ _dbus_decrement_fail_alloc_counter (void) fail_alloc_counter = _DBUS_INT_MAX; _dbus_verbose ("reset fail alloc counter to %d\n", fail_alloc_counter); + if (backtrace_on_fail_alloc) + _dbus_print_backtrace (); return TRUE; } |