summaryrefslogtreecommitdiffstats
path: root/dbus
diff options
context:
space:
mode:
authorDavid Zeuthen <davidz@redhat.com>2006-10-23 17:25:52 +0000
committerDavid Zeuthen <davidz@redhat.com>2006-10-23 17:25:52 +0000
commitcb905b58f068ba68ca8f6645b2c4e9b51ec61e3e (patch)
tree0f079682ca1d396c5df1e97086d83da87181588f /dbus
parent8ea5a53324e2959157f8b47b88211728a7bff375 (diff)
2006-10-23 David Zeuthen <davidz@redhat.com>
* dbus/dbus-memory.c: Use atomic variable to protect n_blocks_outstanding otherwise OOM will be reported using SMP on some arches * bus/dispatch.c: Add missing end of line characters * bus/desktop-file.c (parse_section_start, parse_key_value) (bus_desktop_file_load): Propertly handle OOM * dbus/dbus-threads.c (init_uninitialized_locks): Check that thread_init_generation equals _dbus_current_generation, not 0
Diffstat (limited to 'dbus')
-rw-r--r--dbus/dbus-memory.c29
-rw-r--r--dbus/dbus-threads.c2
2 files changed, 15 insertions, 16 deletions
diff --git a/dbus/dbus-memory.c b/dbus/dbus-memory.c
index f2400af7..a240b2cc 100644
--- a/dbus/dbus-memory.c
+++ b/dbus/dbus-memory.c
@@ -105,7 +105,7 @@ static int n_failures_this_failure = 0;
static dbus_bool_t guards = FALSE;
static dbus_bool_t disable_mem_pools = FALSE;
static dbus_bool_t backtrace_on_fail_alloc = FALSE;
-static int n_blocks_outstanding = 0;
+static DBusAtomic n_blocks_outstanding = {0};
/** value stored in guard padding for debugging buffer overrun */
#define GUARD_VALUE 0xdeadbeef
@@ -283,7 +283,7 @@ _dbus_decrement_fail_alloc_counter (void)
int
_dbus_get_malloc_blocks_outstanding (void)
{
- return n_blocks_outstanding;
+ return n_blocks_outstanding.value;
}
/**
@@ -445,11 +445,10 @@ dbus_malloc (size_t bytes)
if (_dbus_decrement_fail_alloc_counter ())
{
_dbus_verbose (" FAILING malloc of %ld bytes\n", (long) bytes);
-
return NULL;
}
#endif
-
+
if (bytes == 0) /* some system mallocs handle this, some don't */
return NULL;
#ifdef DBUS_BUILD_TESTS
@@ -461,7 +460,7 @@ dbus_malloc (size_t bytes)
block = malloc (bytes + GUARD_EXTRA_SIZE);
if (block)
- n_blocks_outstanding += 1;
+ _dbus_atomic_inc (&n_blocks_outstanding);
return set_guards (block, bytes, SOURCE_MALLOC);
}
@@ -472,7 +471,7 @@ dbus_malloc (size_t bytes)
mem = malloc (bytes);
#ifdef DBUS_BUILD_TESTS
if (mem)
- n_blocks_outstanding += 1;
+ _dbus_atomic_inc (&n_blocks_outstanding);
#endif
return mem;
}
@@ -503,7 +502,7 @@ dbus_malloc0 (size_t bytes)
return NULL;
}
#endif
-
+
if (bytes == 0)
return NULL;
#ifdef DBUS_BUILD_TESTS
@@ -515,7 +514,7 @@ dbus_malloc0 (size_t bytes)
block = calloc (bytes + GUARD_EXTRA_SIZE, 1);
if (block)
- n_blocks_outstanding += 1;
+ _dbus_atomic_inc (&n_blocks_outstanding);
return set_guards (block, bytes, SOURCE_MALLOC_ZERO);
}
#endif
@@ -525,7 +524,7 @@ dbus_malloc0 (size_t bytes)
mem = calloc (bytes, 1);
#ifdef DBUS_BUILD_TESTS
if (mem)
- n_blocks_outstanding += 1;
+ _dbus_atomic_inc (&n_blocks_outstanding);
#endif
return mem;
}
@@ -590,7 +589,7 @@ dbus_realloc (void *memory,
block = malloc (bytes + GUARD_EXTRA_SIZE);
if (block)
- n_blocks_outstanding += 1;
+ _dbus_atomic_inc (&n_blocks_outstanding);
return set_guards (block, bytes, SOURCE_REALLOC_NULL);
}
@@ -602,7 +601,7 @@ dbus_realloc (void *memory,
mem = realloc (memory, bytes);
#ifdef DBUS_BUILD_TESTS
if (memory == NULL && mem != NULL)
- n_blocks_outstanding += 1;
+ _dbus_atomic_inc (&n_blocks_outstanding);
#endif
return mem;
}
@@ -623,9 +622,9 @@ dbus_free (void *memory)
check_guards (memory, TRUE);
if (memory)
{
- n_blocks_outstanding -= 1;
+ _dbus_atomic_dec (&n_blocks_outstanding);
- _dbus_assert (n_blocks_outstanding >= 0);
+ _dbus_assert (n_blocks_outstanding.value >= 0);
free (((unsigned char*)memory) - GUARD_START_OFFSET);
}
@@ -637,9 +636,9 @@ dbus_free (void *memory)
if (memory) /* we guarantee it's safe to free (NULL) */
{
#ifdef DBUS_BUILD_TESTS
- n_blocks_outstanding -= 1;
+ _dbus_atomic_dec (&n_blocks_outstanding);
- _dbus_assert (n_blocks_outstanding >= 0);
+ _dbus_assert (n_blocks_outstanding.value >= 0);
#endif
free (memory);
diff --git a/dbus/dbus-threads.c b/dbus/dbus-threads.c
index 1fbf48b6..a1f3357b 100644
--- a/dbus/dbus-threads.c
+++ b/dbus/dbus-threads.c
@@ -350,7 +350,7 @@ init_uninitialized_locks (void)
{
DBusList *link;
- _dbus_assert (thread_init_generation == 0);
+ _dbus_assert (thread_init_generation == _dbus_current_generation);
link = uninitialized_mutex_list;
while (link != NULL)