Der Bug ist unter XE2 reproduzierbar, unter Seattle ist er behoben.
Der Bug lag in den Indys in der
Unit IdGlobalProtocols.pas.
Dort ist die Function ROL in der Version bei XE2 falsch implementiert.
Delphi-Quellcode:
function ROL(
const AVal: LongWord; AShift: Byte): LongWord;
assembler;
asm
mov cl,
dl
rol eax, cl
end;
statt neu
Delphi-Quellcode:
// 32-bit: Arg1=EAX, Arg2=DL
// 64-bit: Arg1=ECX, Arg2=DL
function ROL(
const AVal: UInt32; AShift: Byte): UInt32;
assembler;
asm
{$IFDEF CPU64}
mov eax, ecx
{$ENDIF}
mov cl,
dl
rol eax, cl
end;
Ein Update der Indys sollte also Abhilfe schaffen.
Viele Grüße...