[runtime] Fix another lost canary change
authorAlexis Christoforides <alexis@thenull.net>
Tue, 7 Oct 2014 00:02:23 +0000 (17:02 -0700)
committerAlexis Christoforides <alexis@thenull.net>
Tue, 7 Oct 2014 00:02:23 +0000 (17:02 -0700)
mono/metadata/sgen-gc.c
mono/metadata/sgen-gc.h

index d29c6c5b1f31c80d74653b84179690bc8f0327ac..f1f55e73da8dcf28221a96a0baa0008835223c92 100644 (file)
@@ -1001,7 +1001,8 @@ pin_objects_from_nursery_pin_queue (ScanCopyContext ctx)
                        /* Skip to the next object */
                        if (((MonoObject*)search_start)->synchronisation != GINT_TO_POINTER (-1)) {
                                CHECK_CANARY_FOR_OBJECT (search_start);
-                               obj_size = obj_size + CANARY_SIZE;
+                               CANARIFY_SIZE (obj_size);
+                               CANARIFY_SIZE (obj_to_pin_size);
                        }
                        search_start = (void*)((char*)search_start + obj_size);
                } while (search_start <= addr);
@@ -1024,8 +1025,6 @@ pin_objects_from_nursery_pin_queue (ScanCopyContext ctx)
                 */
                if (((MonoObject*)obj_to_pin)->synchronisation == GINT_TO_POINTER (-1))
                        goto next_pin_queue_entry;
-               else if (nursery_canaries_enabled ())
-                       pinning_front = (char*)pinning_front + CANARY_SIZE;
 
                /*
                 * Finally - pin the object!
index 6eaea3e0a7d4d147a30bcdb61d0a219842cdcf7e..12121dc723f7dadc9fad2acce63e771cbe8f99a8 100644 (file)
@@ -1172,7 +1172,9 @@ gboolean nursery_canaries_enabled (void) MONO_INTERNAL;
 #define CANARY_SIZE 8
 #define CANARY_STRING  "koupepia"
 
-#define CANARIFY_SIZE(size) size = size + CANARY_SIZE
+#define CANARIFY_SIZE(size) if (nursery_canaries_enabled ()) { \
+                       size = size + CANARY_SIZE;      \
+               }
 
 #define CANARIFY_ALLOC(addr,size) if (nursery_canaries_enabled ()) {   \
                                memcpy ((char*) (addr) + (size), CANARY_STRING, CANARY_SIZE);   \