2005-07-21 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mono / metadata / gc.c
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;
                }