]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
Fixed bug not freeing mutex handle on Windows.
authorRalf Habacker <ralf.habacker@freenet.de>
Tue, 7 Dec 2010 00:34:38 +0000 (01:34 +0100)
committerRalf Habacker <ralf.habacker@freenet.de>
Fri, 10 Dec 2010 07:43:02 +0000 (08:43 +0100)
Reviewed-by: Romain Pokrzywka
dbus/dbus-sysdeps-win.c

index 69e75364a3efe95982cc53b35e1335db201418a5..cf85e0961951eaa736a6c960d09d22f6895a6dae 100644 (file)
@@ -2764,15 +2764,15 @@ _dbus_daemon_already_runs (DBusString *address, DBusString *shm_name, const char
   DBusString mutex_name;
   dbus_bool_t bRet = TRUE;
 
-  // sync _dbus_daemon_publish_session_bus_address, _dbus_daemon_unpublish_session_bus_address and _dbus_daemon_already_runs
-  lock = _dbus_global_lock( cUniqueDBusInitMutex );
-
   if (!_dbus_get_mutex_name(&mutex_name,scope))
     {
       _dbus_string_free( &mutex_name );
       return FALSE;
     }
 
+  // sync _dbus_daemon_publish_session_bus_address, _dbus_daemon_unpublish_session_bus_address and _dbus_daemon_already_runs
+  lock = _dbus_global_lock( cUniqueDBusInitMutex );
+
   // do checks
   daemon = CreateMutexA( NULL, FALSE, _dbus_string_get_const_data(&mutex_name) );
   if(WaitForSingleObject( daemon, 10 ) != WAIT_TIMEOUT)
@@ -2811,16 +2811,16 @@ _dbus_get_autolaunch_address (const char *scope, DBusString *address,
   const char * daemon_name = DBUS_DAEMON_NAME ".exe";
   DBusString shm_name;
 
-  mutex = _dbus_global_lock ( cDBusAutolaunchMutex );
-
   _DBUS_ASSERT_ERROR_IS_CLEAR (error);
 
   if (!_dbus_get_shm_name(&shm_name,scope))
     {
-        dbus_set_error_const (error, DBUS_ERROR_FAILED, "could not determine shm address");
+        dbus_set_error_const (error, DBUS_ERROR_FAILED, "could not determine shm name");
         return FALSE;
     }
 
+  mutex = _dbus_global_lock ( cDBusAutolaunchMutex );
+
   if (_dbus_daemon_already_runs(address,&shm_name,scope))
     {
         _dbus_verbose("found already running dbus daemon\n");
@@ -2855,7 +2855,7 @@ _dbus_get_autolaunch_address (const char *scope, DBusString *address,
   else
     {
       dbus_set_error_const (error, DBUS_ERROR_FAILED, "Failed to launch dbus-daemon");
-      retval == FALSE;
+      retval = FALSE;
     }
 
 out: