--- 16destroy.t.bak	2010-08-07 00:40:59.578125000 +0300
+++ 16destroy.t	2010-08-07 00:39:40.640625000 +0300
@@ -76,12 +76,21 @@
     }
 
     sub DESTROY {
-        if ($expect_active < 0) {
-            exit shift->FETCH('Active') || 0;
+        if ($expect_active < 0) { #inside child
+            if ($^O =~ /win/i) { #Win32 dark magic. It works, so don't change anything
+                my $self=shift;
+                if ($self->FETCH('Active')>0) {
+                    fail "Child should be inactive on DESTROY";
+                    exit $self->FETCH('Active') || 0; #exit in DESTROY on Windows works unpredictably
+                }
+            } else {
+                exit shift->FETCH('Active') || 0;
+            }
+        } else {
+            return $expect_active
+                ? ok( shift->FETCH('Active'), 'Should be active in DESTROY')
+                : ok( !shift->FETCH('Active'), 'Should not be active in DESTROY');
         }
-        return $expect_active
-            ? ok( shift->FETCH('Active'), 'Should be active in DESTROY')
-            : ok( !shift->FETCH('Active'), 'Should not be active in DESTROY');
     }
 }
 
