Browse Source

* fpc_help_fail compilerproc
* fpc_new_class, fpc_dispose_class not needed by latest compiler

peter 22 years ago
parent
commit
163e06f93b
2 changed files with 18 additions and 4 deletions
  1. 6 2
      rtl/inc/compproc.inc
  2. 12 2
      rtl/inc/generic.inc

+ 6 - 2
rtl/inc/compproc.inc

@@ -220,10 +220,10 @@ Function fpc_Catches(Objtype : TClass) : TObject; compilerproc;
 
 function fpc_help_constructor(_self:pointer;var _vmt:pointer;_vmt_pos:cardinal):pointer;compilerproc;
 procedure fpc_help_destructor(_self,_vmt:pointer;vmt_pos:cardinal);compilerproc;
+procedure fpc_help_fail(_self:pointer;var _vmt:pointer;vmt_pos:cardinal);compilerproc;
 
 {$ifdef dummy}
 Procedure fpc_DestroyException(o : TObject); compilerproc;
-procedure fpc_help_fail(var _self:pointer;var vmt:pointer;vmt_pos:cardinal);compilerproc;
 procedure fpc_check_object(obj:pointer); compilerproc;
 procedure fpc_check_object_ext(vmt,expvmt:pointer);compilerproc;
 {$endif dummy}
@@ -290,7 +290,11 @@ function fpc_qword_to_double(q: qword): double; compilerproc;
 
 {
   $Log$
-  Revision 1.40  2003-05-11 21:39:14  peter
+  Revision 1.41  2003-05-13 19:18:08  peter
+    * fpc_help_fail compilerproc
+    * fpc_new_class, fpc_dispose_class not needed by latest compiler
+
+  Revision 1.40  2003/05/11 21:39:14  peter
     * constructor helper added
 
   Revision 1.39  2003/04/25 21:15:20  peter

+ 12 - 2
rtl/inc/generic.inc

@@ -370,7 +370,9 @@ type
     parent : pointer;
   end;
 begin
-   if (_self=nil) then
+   { already released? }
+   if (_self=nil) or
+      (ppointer(_self+vmt_pos)^=nil) then
      exit;
    if (pvmt(ppointer(_self+vmt_pos)^)^.size=0) or
       (pvmt(ppointer(_self+vmt_pos)^)^.size+pvmt(ppointer(_self+vmt_pos)^)^.msize<>0) then
@@ -417,6 +419,8 @@ end;
 {$endif FPC_SYSTEM_HAS_FPC_HELP_FAIL}
 
 
+{$ifndef NOCLASSHELPERS}
+
 {$ifndef FPC_SYSTEM_HAS_FPC_NEW_CLASS}
 function fpc_new_class(_self,_vmt:pointer):pointer;[public,alias:'FPC_NEW_CLASS']; {$ifdef hascompilerproc} compilerproc; {$endif}
 begin
@@ -442,6 +446,8 @@ begin
 end;
 {$endif ndef FPC_SYSTEM_HAS_FPC_DISPOSE_CLASS}
 
+{$endif NOCLASSHELPERS}
+
 
 {$ifndef FPC_SYSTEM_HAS_FPC_CHECK_OBJECT}
 procedure fpc_check_object(_vmt : pointer);saveregisters;[public,alias:'FPC_CHECK_OBJECT'];  {$ifdef hascompilerproc} compilerproc; {$endif}
@@ -959,7 +965,11 @@ end;
 
 {
   $Log$
-  Revision 1.54  2003-04-23 13:10:09  peter
+  Revision 1.55  2003-05-13 19:18:08  peter
+    * fpc_help_fail compilerproc
+    * fpc_new_class, fpc_dispose_class not needed by latest compiler
+
+  Revision 1.54  2003/04/23 13:10:09  peter
     * remvoe objectsize loading from help_destructor
     * implement fpc_check_object
     * saveregistrers for check_object