diff --git a/tests/tbs0017.pp b/tests/tbs0017.pp
index eefa916f6e..971136b770 100644
--- a/tests/tbs0017.pp
+++ b/tests/tbs0017.pp
@@ -1,27 +1,38 @@
+
+{$ifdef go32v2}
+   uses dpmiexcp;
+
+{$endif go32v2}
+
+const
+      nextoptpass : longint = 0;
   procedure init;
 
-    var
-       endofparas : boolean;
+    const
+       endofparas : boolean = false;
 
     procedure getparastring;
 
       procedure nextopt;
 
         begin
+           endofparas:=true;
            getparastring;
+           inc(nextoptpass);
            init;
-           endofparas:=false;
         end;
 
       begin
+       if not endofparas then
          nextopt;
       end;
       
     begin
-       getparastring;
+         getparastring;
     end;      
      
 begin
    init;
+   if nextoptpass<>1 then Halt(1);
 end.
 
diff --git a/tests/ts010007.pp b/tests/ts010007.pp
index 23efc21e44..61d703a12c 100644
--- a/tests/ts010007.pp
+++ b/tests/ts010007.pp
@@ -1,3 +1,5 @@
+{ $OPT=-S2 }
+{ classes need objpas !! }
 { needed to intercept  GPF (PM) }
 {$ifdef go32v2}
   uses dpmiexcp;
diff --git a/tests/ts010014.pp b/tests/ts010014.pp
index df36464e35..46e30f2a5e 100644
--- a/tests/ts010014.pp
+++ b/tests/ts010014.pp
@@ -29,8 +29,24 @@ type
 var
    p : pa;
    data : array[0..4] of longint;
+   saveexit : pointer;
+
+  procedure testerror;
+    begin
+       exitproc:=saveexit;
+       if errorcode=210 then
+         begin
+            errorcode:=0;
+            writeln('Object valid VMT check works');
+            runerror(0);
+         end 
+       else
+         halt(1);
+    end;
 
 begin
+   saveexit:=exitproc;
+   exitproc:=@testerror;
    fillchar(data,sizeof(data),12);
    p:=new(pa,init);
    p^.p;
diff --git a/tests/ts010100.pp b/tests/ts010100.pp
index 4bb9a168b0..750e8b7f34 100644
--- a/tests/ts010100.pp
+++ b/tests/ts010100.pp
@@ -4,5 +4,6 @@ var
    o : tobject;
 
 begin
-   halt(1);
+   if assigned(o) then
+     halt(1);
 end.