Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
authorPaolo Molaro <lupus@oddwiz.org>
Fri, 27 May 2005 12:06:21 +0000 (12:06 -0000)
committerPaolo Molaro <lupus@oddwiz.org>
Fri, 27 May 2005 12:06:21 +0000 (12:06 -0000)
* gc.c: register a new weak link only if the object is non-null
(fixes bug#75061).

svn path=/trunk/mono/; revision=45112

mono/metadata/ChangeLog
mono/metadata/gc.c

index 4d92d92f9ddd3a9fe639669f4a1c3605341305a6..f3b5cc9886cc5260b3aabf40de44bba5188ee1ba 100644 (file)
@@ -1,3 +1,9 @@
+
+Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
+
+       * gc.c: register a new weak link only if the object is non-null
+       (fixes bug#75061).
+
 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
 
        * culture-info.h : short time pattern too.
index 4bee4b445acedefe8d097ed2c9f12a81aa15136e..a8d66b7566a4ed8123a8d9521155c3a55aeb377d 100644 (file)
@@ -481,7 +481,8 @@ alloc_handle (HandleData *handles, MonoObject *obj)
        slot = slot * 32 + i;
        handles->entries [slot] = obj;
        if (handles->type <= HANDLE_WEAK_TRACK) {
-               mono_gc_weak_link_add (&(handles->entries [slot]), obj);
+               if (obj)
+                       mono_gc_weak_link_add (&(handles->entries [slot]), obj);
        }
 
        unlock_handles (handles);
@@ -538,7 +539,8 @@ mono_gchandle_set_target (guint32 gchandle, MonoObject *obj)
        if (slot < handles->size && (handles->bitmap [slot / 32] & (1 << (slot % 32)))) {
                if (handles->type <= HANDLE_WEAK_TRACK) {
                        mono_gc_weak_link_remove (&handles->entries [slot]);
-                       mono_gc_weak_link_add (&handles->entries [slot], obj);
+                       if (obj)
+                               mono_gc_weak_link_add (&handles->entries [slot], obj);
                } else {
                        handles->entries [slot] = obj;
                }