]> granicus.if.org Git - gc/commitdiff
Fix test_cpp assertion violation in find-leak mode
authorIvan Maidanski <ivmai@mail.ru>
Wed, 21 Nov 2018 21:32:50 +0000 (00:32 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Fri, 23 Nov 2018 22:21:42 +0000 (01:21 +0300)
* tests/test_cpp.cc (C.Test, D.Test, F.Test): Do not fail on
nFreed>=0.8*nAllocated[F] assertion violation if GC_get_find_leak() returns
non-zero; replace .8*nAllocated[F] to (nAllocated[F]/5)*4 to avoid
floating-point operations.

tests/test_cpp.cc

index 6f7efad5d884a4829ebb1d64ea84d97a4a19fbc6..b2679d4cb93d25cdd9999129ddc8d0d34e274eb7 100644 (file)
@@ -157,7 +157,9 @@ class C: public GC_NS_QUALIFY(gc_cleanup), public A { public:
         left = right = 0;
         level = -123456;}
     static void Test() {
-        my_assert( nFreed <= nAllocated && nFreed >= .8 * nAllocated );}
+        my_assert(nFreed <= nAllocated);
+        my_assert(nFreed >= (nAllocated / 5) * 4 || GC_get_find_leak());
+    }
 
     static int nFreed;
     static int nAllocated;
@@ -180,7 +182,8 @@ class D: public GC_NS_QUALIFY(gc) { public:
         nFreed++;
         my_assert( (GC_word)self->i == (GC_word)data );}
     static void Test() {
-        my_assert( nFreed >= .8 * nAllocated );}
+        my_assert(nFreed >= (nAllocated / 5) * 4 || GC_get_find_leak());
+    }
 
     int i;
     static int nFreed;
@@ -218,7 +221,7 @@ class F: public E {public:
     }
 
     static void Test() {
-        my_assert(nFreedF >= .8 * nAllocatedF);
+        my_assert(nFreedF >= (nAllocatedF / 5) * 4 || GC_get_find_leak());
         my_assert(2 * nFreedF == nFreed);
     }