Einzelnen Beitrag anzeigen

DMW

Registriert seit: 6. Sep 2006
Ort: Münster
269 Beiträge
 
Delphi XE Professional
 
#3

Re: AV verursacht durch Code Optimierung

  Alt 9. Dez 2008, 12:30
Das ist kein Codegenerierungsfehler, sondern ReturnAddr verläßt sich darauf, daß Abort einen Stackframe generiert, was in optimiertem Code nicht der Fall ist.

Die beste Alternative wäre vermutlich, wenn ReturnAddr anstelle von EBP auf ESP zugriffe:
Delphi-Quellcode:
procedure Abort;

  function ReturnAddr: Pointer;
  asm
          MOV EAX,[ESP + 4]
  end;

begin
  raise EAbort.CreateRes(@SOperationAborted) at ReturnAddr;
end;
Moritz
"Hey, it compiles! Ship it!"
C++Builder Pages
  Mit Zitat antworten Zitat