Jelajahi Sumber

* TypeStubManager.cs: fixed type_to_manager member to be initialized per appdoamin (within TARGET_JVM block)

svn path=/trunk/mcs/; revision=57863
Vladimir Krasnov 20 tahun lalu
induk
melakukan
86d0162287

+ 5 - 0
mcs/class/System.Web.Services/System.Web.Services.Protocols/ChangeLog

@@ -1,3 +1,8 @@
+2006-03-12  Vladimir Krasnov  <[email protected]>
+
+	* TypeStubManager.cs: fixed type_to_manager member to be initialized
+	per appdoamin (within TARGET_JVM block)
+
 2006-03-12  Vladimir Krasnov  <[email protected]>
 
 	* SoapDocumentationHandler.cs: TARGET_JVM blocks added to exclude

+ 12 - 2
mcs/class/System.Web.Services/System.Web.Services.Protocols/TypeStubManager.cs

@@ -372,12 +372,22 @@ namespace System.Web.Services.Protocols {
 #if !TARGET_JVM
 		static Hashtable type_to_manager;
 #else
+		const string type_to_manager_key = "TypeStubManager.type_to_manager";
 		static Hashtable type_to_manager {
 			get {
-				return (Hashtable)AppDomain.CurrentDomain.GetData("TypeStubManager.type_to_manager");
+				Hashtable hash = (Hashtable)AppDomain.CurrentDomain.GetData(type_to_manager_key);
+
+				if (hash != null)
+					return hash;
+
+				lock(type_to_manager_key) {
+					AppDomain.CurrentDomain.SetData(type_to_manager_key, new Hashtable());
+				}
+
+				return (Hashtable)AppDomain.CurrentDomain.GetData(type_to_manager_key);
 			}
 			set {
-				AppDomain.CurrentDomain.SetData("TypeStubManager.type_to_manager", value);
+				//do nothing: we manage our type_to_manager per domain
 			}
 		}
 #endif