From b907a9bd06b7c71c09f1946f224b9a4818b2b0ac Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Thu, 29 Aug 2013 12:49:35 +0100 Subject: [PATCH 1/5] _dbus_file_path_extract_elements_from_tail: don't misuse static variable If we _dbus_verbose() from more than one thread at the same time, we don't want to get into trouble with static variables (and I don't think micro-optimizing this function is really worth it anyway). --- dbus/dbus-internals.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/dbus/dbus-internals.c b/dbus/dbus-internals.c index 257f1d4..e248259 100644 --- a/dbus/dbus-internals.c +++ b/dbus/dbus-internals.c @@ -332,25 +332,22 @@ _dbus_verbose_init (void) */ static char *_dbus_file_path_extract_elements_from_tail(const char *file,int level) { - static int prefix = -1; + int prefix = 0; + char *p = (char *)file + strlen(file); + int i = 0; - if (prefix == -1) + for (;p >= file;p--) { - char *p = (char *)file + strlen(file); - int i = 0; - prefix = 0; - for (;p >= file;p--) + if (DBUS_IS_DIR_SEPARATOR(*p)) { - if (DBUS_IS_DIR_SEPARATOR(*p)) + if (++i >= level) { - if (++i >= level) - { - prefix = p-file+1; - break; - } - } - } + prefix = p-file+1; + break; + } + } } + return (char *)file+prefix; } -- 1.8.4.rc3