This is from the latest snapshot of ICS V8.

procedure TIcsTimer.UpdateTimer;
begin
    KillTimer(FIcsWndControl.Handle, UINT_PTR(Self));
    if (FInterval <> 0) and FEnabled and Assigned(FOnTimer) then
        if SetTimer(FIcsWndControl.Handle,
                    Cardinal(Self), FInterval, nil) = 0 then begin 
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
            FEnabled := FALSE;
            raise EIcsTimerException.Create('No more timers');
        end
        else
            FLastEvent := IcsGetTickCount;
end;

It should be:

   NativeUInt(Self), FInterval, nil) = 0 then begin 
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


Reference: http://docwiki.embarcadero.com/Libraries/Seattle/en/System.Cardinal


1.       Do I really have the latest version of the file?


2.       If so, and this bug exists, it begs the question: does anybody use ICS 
in a 64-bit application? :-)

Thanks,
Doug

BTW:

I'm using  the THttpServer component in Delphi XE2 Update 4 Hotfix 1.

It was failing in TIcsWndHandler.WndProc(var MsgRec: TMessage);
begin
<.....>
                if (Msg = WM_TIMER) then begin
                    Obj := TObject(WParam);
>>>>>>> if (not IsBadReadPtr(Obj, GUIDOffSet + SizeOf(INT_PTR))) and
                    {$IFDEF COMPILER16_UP} { WPARAM changed to unsigned }
                       (PUINT_PTR(WParam + {$IFDEF 
RTL_NAMESPACES}Winapi.{$ENDIF}Windows.WPARAM(GUIDOffSet))^ = WParam) and
                    {$ELSE}
                       (PINT_PTR(WParam + GUIDOffSet)^ = WParam) and
                    {$ENDIF}
                       (Obj is TIcsTimer) then
                        TIcsTimer(Obj).WmTimer(MsgRec);
                end
<.....>
end;


-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be

Reply via email to