diff --git a/test/catch_ptr_02.cpp b/test/catch_ptr_02.cpp
index 9421782..34af3c8 100644
--- a/test/catch_ptr_02.cpp
+++ b/test/catch_ptr_02.cpp
@@ -135,9 +135,10 @@
 
 void test8 ()
 {
+    vDerived derived;
     try
     {
-        throw new vDerived;
+        throw &derived;
         assert(false);
     }
     catch (vBase *p) {
diff --git a/test/inherited_exception.cpp b/test/inherited_exception.cpp
index 090ae97..7c106c1 100644
--- a/test/inherited_exception.cpp
+++ b/test/inherited_exception.cpp
@@ -56,11 +56,11 @@
 }
 
 void f3() {
-  Child* child  = new Child;
-  child->b1 = 10;
-  child->b2 = 11;
-  child->c = 12;
-  throw static_cast<Base2*>(child);
+  static Child child;
+  child.b1 = 10;
+  child.b2 = 11;
+  child.c = 12;
+  throw static_cast<Base2*>(&child);
 }
 
 int main()
diff --git a/test/test_vector1.cpp b/test/test_vector1.cpp
index b8bf45c..6790cb5 100644
--- a/test/test_vector1.cpp
+++ b/test/test_vector1.cpp
@@ -11,6 +11,7 @@
 
 #include <iostream>
 #include <cstdlib>
+#include <cassert>
 
 //  Wrapper routines
 void *my_alloc2 ( size_t sz ) {
@@ -206,31 +207,32 @@
 int test_exception_in_destructor ( ) {
     int retVal = 0;
     void *one, *two, *three;
+    one = two = three = NULL;
 
 //  Throw from within a destructor
     gConstructorCounter = gDestructorCounter = 0;
     gConstructorThrowTarget = -1;
     gDestructorThrowTarget  = 15;
     try {
-        one = two = three = NULL;
+        one = two = NULL;
         one     = __cxxabiv1::__cxa_vec_new ( 10, 40, 8, throw_construct, throw_destruct );
         two     = __cxxabiv1::__cxa_vec_new2( 10, 40, 8, throw_construct, throw_destruct, my_alloc2, my_dealloc2 );
-        three   = __cxxabiv1::__cxa_vec_new3( 10, 40, 8, throw_construct, throw_destruct, my_alloc2, my_dealloc3 );
         }
     catch ( int i ) {}
     
     try {
         __cxxabiv1::__cxa_vec_delete ( one,       40, 8, throw_destruct );
         __cxxabiv1::__cxa_vec_delete2( two,       40, 8, throw_destruct, my_dealloc2 );
-        __cxxabiv1::__cxa_vec_delete3( three,     40, 8, throw_destruct, my_dealloc3 );
+        assert(false);
         }
     catch ( int i ) {}
     
 //  We should have thrown in the middle of cleaning up "two", which means that
-//  there should be 20 calls to the destructor, and "three" was not cleaned up.
-    if ( gConstructorCounter != 30 || gDestructorCounter != 20 ) {
+//  there should be 20 calls to the destructor and the try block should exit
+//  before the assertion.
+    if ( gConstructorCounter != 20 || gDestructorCounter != 20 ) {
         std::cerr << "Unexpected Constructor/Destructor calls (1D)" << std::endl;
-        std::cerr << "Expected (30, 20), but got (" << gConstructorCounter << ", " << 
+        std::cerr << "Expected (20, 20), but got (" << gConstructorCounter << ", " <<
                 gDestructorCounter << ")" << std::endl;
         retVal = 1;
         }
