Sophie

Sophie

distrib > Mandriva > 2010.1 > i586 > media > main-testing-src > by-pkgid > 938401d84ba1bcfea2400daa8deef4ea > files > 4

java-1.6.0-openjdk-1.6.0.0-7.b18.4mdv2010.2.src.rpm

diff -p -up icedtea6-1.8.2/plugin/icedteanp/IcedTeaNPPlugin.cc.orig icedtea6-1.8.2/plugin/icedteanp/IcedTeaNPPlugin.cc
--- icedtea6-1.8.2/plugin/icedteanp/IcedTeaNPPlugin.cc.orig	2010-10-29 16:01:16.842506014 -0200
+++ icedtea6-1.8.2/plugin/icedteanp/IcedTeaNPPlugin.cc	2010-10-29 16:20:23.627505837 -0200
@@ -412,7 +412,9 @@ void start_jvm_if_needed()
   // This is asynchronized function. It must
   // have exclusivity when running.
 
-  GMutex *vm_start_mutex = g_mutex_new();
+  static GMutex *vm_start_mutex;
+  if (vm_start_mutex == NULL)
+    vm_start_mutex = g_mutex_new();
   g_mutex_lock(vm_start_mutex);
 
   PLUGIN_DEBUG("Checking JVM status...\n");
@@ -421,6 +423,7 @@ void start_jvm_if_needed()
   if (jvm_up)
   {
       PLUGIN_DEBUG("JVM is up. Returning.\n");
+      g_mutex_unlock(vm_start_mutex);
       return;
   }
 
diff -p -up icedtea6-1.8.2/plugin/icedteanp/IcedTeaPluginUtils.cc.orig icedtea6-1.8.2/plugin/icedteanp/IcedTeaPluginUtils.cc
--- icedtea6-1.8.2/plugin/icedteanp/IcedTeaPluginUtils.cc.orig	2010-10-29 16:05:34.780507206 -0200
+++ icedtea6-1.8.2/plugin/icedteanp/IcedTeaPluginUtils.cc	2010-10-29 16:31:36.731506939 -0200
@@ -1029,6 +1029,7 @@ MessageBus::post(const char* message)
 
 	PLUGIN_DEBUG("Trying to lock %p...\n", &msg_queue_mutex);
 	pthread_mutex_lock(&subscriber_mutex);
+	pthread_mutex_lock(&msg_queue_mutex);
 
     PLUGIN_DEBUG("Message %s received on bus. Notifying subscribers.\n", msg);
 
@@ -1038,10 +1039,14 @@ MessageBus::post(const char* message)
     	message_consumed = ((BusSubscriber*) *i)->newMessageOnBus(msg);
     }
 
+    pthread_mutex_unlock(&msg_queue_mutex);
     pthread_mutex_unlock(&subscriber_mutex);
 
-    if (!message_consumed)
+    if (!message_consumed) {
     	PLUGIN_DEBUG("Warning: No consumer found for message %s\n", msg);
+	/* no subscribers */
+	free(msg);
+    }
 
     PLUGIN_DEBUG("%p unlocked...\n", &msg_queue_mutex);
 }