t_id
529
t_adddate
2003/10/03
t_result
0
t_knownrunerror
0
tr_id | run | tr_ok | tr_skip | tr_result |
---|---|---|---|---|
1022444695 | 1027333 | True | False | Successfully run |
Record count: 1
{$R+} type ta = object constructor init; destructor done; procedure p;virtual; end; pa = ^ta; constructor ta.init; begin end; destructor ta.done; begin end; procedure ta.p; begin end; type plongint = ^longint; 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; { the vmt pointer gets an invalid value: } plongint(p)^:=longint(@data); { causes runerror } p^.p; halt(1); end.