ts010014.pp 509 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. {$R+}
  2. type
  3. ta = object
  4. constructor init;
  5. destructor done;
  6. procedure p;virtual;
  7. end;
  8. pa = ^ta;
  9. constructor ta.init;
  10. begin
  11. end;
  12. destructor ta.done;
  13. begin
  14. end;
  15. procedure ta.p;
  16. begin
  17. end;
  18. type
  19. plongint = ^longint;
  20. var
  21. p : pa;
  22. data : array[0..4] of longint;
  23. begin
  24. fillchar(data,sizeof(data),12);
  25. p:=new(pa,init);
  26. p^.p;
  27. { the vmt pointer gets an invalid value: }
  28. plongint(p)^:=longint(@data);
  29. { causes runerror }
  30. p^.p;
  31. halt(1);
  32. end.