[lazarus] Possible bug in FPC or in Lazarus?

Martin Smat martin.smat at tiscali.cz
Thu Dec 19 12:48:36 EST 2002


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)

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.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: zip00007.zip
Type: application/octet-stream
Size: 371 bytes
Desc: "bugfpc.zip"
Url : http://localhost/pipermail/lazarus/attachments/20021219/a52abbf4/zip00007.obj


More information about the Lazarus mailing list