summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-internals.c
diff options
context:
space:
mode:
Diffstat (limited to 'dbus/dbus-internals.c')
-rw-r--r--dbus/dbus-internals.c76
1 files changed, 26 insertions, 50 deletions
diff --git a/dbus/dbus-internals.c b/dbus/dbus-internals.c
index 6d2395fd..2aa26805 100644
--- a/dbus/dbus-internals.c
+++ b/dbus/dbus-internals.c
@@ -355,42 +355,6 @@ _dbus_string_array_contains (const char **array,
}
/**
- * Returns a string describing the given type.
- *
- * @param type the type to describe
- * @returns a constant string describing the type
- */
-const char *
-_dbus_type_to_string (int type)
-{
- switch (type)
- {
- case DBUS_TYPE_INVALID:
- return "invalid";
- case DBUS_TYPE_NIL:
- return "nil";
- case DBUS_TYPE_BOOLEAN:
- return "boolean";
- case DBUS_TYPE_INT32:
- return "int32";
- case DBUS_TYPE_UINT32:
- return "uint32";
- case DBUS_TYPE_DOUBLE:
- return "double";
- case DBUS_TYPE_STRING:
- return "string";
- case DBUS_TYPE_CUSTOM:
- return "custom";
- case DBUS_TYPE_ARRAY:
- return "array";
- case DBUS_TYPE_DICT:
- return "dict";
- default:
- return "unknown";
- }
-}
-
-/**
* Returns a string describing the given name.
*
* @param header_field the field to describe
@@ -525,6 +489,9 @@ _dbus_test_oom_handling (const char *description,
void *data)
{
int approx_mallocs;
+ const char *setting;
+ int max_failures_to_try;
+ int i;
/* Run once to see about how many mallocs are involved */
@@ -540,21 +507,30 @@ _dbus_test_oom_handling (const char *description,
_dbus_verbose ("\n=================\n%s: about %d mallocs total\n=================\n",
description, approx_mallocs);
- _dbus_set_fail_alloc_failures (1);
- if (!run_failing_each_malloc (approx_mallocs, description, func, data))
- return FALSE;
-
- _dbus_set_fail_alloc_failures (2);
- if (!run_failing_each_malloc (approx_mallocs, description, func, data))
- return FALSE;
-
- _dbus_set_fail_alloc_failures (3);
- if (!run_failing_each_malloc (approx_mallocs, description, func, data))
- return FALSE;
+ setting = _dbus_getenv ("DBUS_TEST_MALLOC_FAILURES");
+ if (setting != NULL)
+ {
+ DBusString str;
+ long v;
+ _dbus_string_init_const (&str, setting);
+ v = 4;
+ if (!_dbus_string_parse_int (&str, 0, &v, NULL))
+ _dbus_warn ("couldn't parse '%s' as integer\n", setting);
+ max_failures_to_try = v;
+ }
+ else
+ {
+ max_failures_to_try = 4;
+ }
- _dbus_set_fail_alloc_failures (4);
- if (!run_failing_each_malloc (approx_mallocs, description, func, data))
- return FALSE;
+ i = setting ? max_failures_to_try - 1 : 1;
+ while (i < max_failures_to_try)
+ {
+ _dbus_set_fail_alloc_failures (i);
+ if (!run_failing_each_malloc (approx_mallocs, description, func, data))
+ return FALSE;
+ ++i;
+ }
_dbus_verbose ("\n=================\n%s: all iterations passed\n=================\n",
description);