Merge pull request #305 from robwilkens/master
authorMiguel de Icaza <miguel@gnome.org>
Sat, 26 May 2012 01:21:41 +0000 (18:21 -0700)
committerMiguel de Icaza <miguel@gnome.org>
Sat, 26 May 2012 01:21:41 +0000 (18:21 -0700)
This fixes bug # 853 in ximarin bugzilla.

mcs/class/System/mobile_System.dll.sources
mono/metadata/mono-cq.c

index e02746a1c3000cefb650f525519f11b50e801554..1d3c52a464edcfcdd2ce102a961ab9d87612094e 100644 (file)
@@ -122,6 +122,7 @@ System.ComponentModel/IDataErrorInfo.cs
 System.ComponentModel/IEditableObject.cs
 System.ComponentModel/IListSource.cs
 System.ComponentModel/INotifyPropertyChanged.cs
+System.ComponentModel/INotifyPropertyChanging.cs
 System.ComponentModel/IRevertibleChangeTracking.cs
 System.ComponentModel/ISite.cs
 System.ComponentModel/ISupportInitialize.cs
@@ -154,6 +155,8 @@ System.ComponentModel/ProgressChangedEventArgs.cs
 System.ComponentModel/ProgressChangedEventHandler.cs
 System.ComponentModel/PropertyChangedEventArgs.cs
 System.ComponentModel/PropertyChangedEventHandler.cs
+System.ComponentModel/PropertyChangingEventArgs.cs
+System.ComponentModel/PropertyChangingEventHandler.cs
 System.ComponentModel/PropertyDescriptor.cs
 System.ComponentModel/PropertyDescriptor.cs
 System.ComponentModel/PropertyDescriptorCollection.cs
index 790af7d4cb1e8702e9e6d18f3170d53643f5f152..01be2ef71f21fb348c8d664a0aecc1e0f0952070 100644 (file)
@@ -66,8 +66,8 @@ mono_cq_create ()
        MonoCQ *cq;
 
        cq = g_new0 (MonoCQ, 1);
-       MONO_GC_REGISTER_ROOT (cq->head);
-       MONO_GC_REGISTER_ROOT (cq->tail);
+       MONO_GC_REGISTER_ROOT_SINGLE (cq->head);
+       MONO_GC_REGISTER_ROOT_SINGLE (cq->tail);
        cq->head = mono_mlist_alloc ((MonoObject *) mono_cqitem_alloc ());
        cq->tail = cq->head;
        CQ_DEBUG ("Created %p", cq);
@@ -107,6 +107,10 @@ mono_cq_add_node (MonoCQ *cq)
        n = mono_mlist_alloc ((MonoObject *) mono_cqitem_alloc ());
        prev_tail = cq->tail;
        MONO_OBJECT_SETREF (prev_tail, next, n);
+
+       /* prev_tail->next must be visible before the new tail is */
+       STORE_STORE_FENCE;
+
        cq->tail = n;
 }