2
0

tb0508.pp 541 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. { inlining is not compatible with get_caller_frame/get_frame }
  2. {$inline off}
  3. type
  4. PointerLocal = procedure(_EBP: Pointer);
  5. procedure proccall(p: pointer);
  6. begin
  7. PointerLocal(p)(get_caller_frame(get_frame));
  8. end;
  9. procedure t1;
  10. var
  11. l : longint;
  12. procedure t2;
  13. procedure t3;
  14. procedure t4;
  15. begin
  16. l := 5;
  17. end;
  18. begin { t3 }
  19. proccall(@t4);
  20. end;
  21. begin { t2 }
  22. t3;
  23. end;
  24. begin { t1 }
  25. l := 0;
  26. t2;
  27. if (l <> 5) then
  28. halt(1);
  29. end;
  30. begin
  31. t1;
  32. end.