[lazarus] Possible bug in FPC or in Lazarus?

Mattias Gaertner nc-gaertnma at netcologne.de
Thu Dec 19 14:50:58 EST 2002


On Thu, 19 Dec 2002 18:51:07 +0100
Martin Smat <martin.smat at tiscali.cz> wrote:

> Hi,
> Look at the procedure TCustomListBox.CreateHandle:
> 
> procedure TCustomListBox.CreateHandle;
> var
>    NewStrings : TStrings;
>    i: integer;
> begin
>    inherited CreateHandle;
>    CNSendMessage(LM_SETBORDER, Self, nil);
>    UpdateSelectionMode;
> (1)  UpdateSorted;
>    NewStrings:= TStrings(Pointer(CNSendMessage(LM_GETITEMS, Self, nil)));
>    NewStrings.Assign(Items);
>    for i:=0 to Items.Count-1 do begin
>      if clbiSelected in GetListBoxItemRecord(FItems,i)^.Flags then
>        SendItemSelected(i,True);
>    end;
>    FItems.Free;
>    FItems:= NewStrings;
>    CNSendMessage(LM_SETITEMINDEX, Self, Pointer(FItemIndex));
> end;
> 
> Line (1) UpdateSorted sends LM_SORT message which works with 
> TGtkCListStringList (in GTK) or with TWin32CListStringList (in Win32) 
> object. These classes are descendands of class TStringList.
> In constructor TCustomListBox.Create is line
> FItems := TExtendedStringList.Create(...). TExtendedString is descendand 
> of class TStringList too.
> So we have folowing classes:
>    TStringList
>      |
>      |---TWin32CListStringList
>      |
>      |---TExtendedString
> 
> When processing the LM_SORT message in interface, there is this 
> typecasting (symplified):
>    TWin32CListStringList(FItems).Sorted:=...
> This line calls TWin32CListStringList.SetSorted method.
> 
> On this line crashes the listboxtest.pp example. I think it is because 
> of calling the SetSorted method. This method is not in TExtendedString 
> class.
> Listboxtest example ends with "Unknown Run-Time Error : 217". (tested in 
> Win32)

UpdateSorted sent the wrong list in TLMSort. The gtk interface does not use
it and so the bug didn't appear there. I fixed that. Can a win32 user check
if this works?


Mattias


> 
> If you still don't know what I'm speaking about compile my attached demo 
> and run it. It ends with Run-Time error 216. I don't know why once it is 
> error 216 and once 217. Maybe someone from FPC team can answer this.
> 
> Martin Smat.
> 






More information about the Lazarus mailing list