I just installed an old version of puppy linux (4.00) in a virtual machine to recreate a system I have to maintain (and, no, I cannot update it, the video card in the production system only works with puppy linux and this specific version).

This version of puppy linux has gtk 2.12.1

I installed fpc 2.6.4 in it and compiled lazarus 1.6.2.
Everything works but clicking on Tools->Options the ide segfaults.
I cannot use the debugger, but the segfault happens in line 207 of lcl/interfaces/gtk2/gtk2listviewtreemodel.pas

function TLCLListViewModel.get_iter(iter: PGtkTreeIter; path: PGtkTreePath): gboolean; cdecl;
var
  Index: PtrUInt;
begin
  Result := False;
  Index := gtk_tree_path_get_indices(path)[0]; <--- here
  if Index < ListView.Items.Count then
  begin
    iter^.user_data:= {%H-}Pointer(Index);
    Exit(True);
  end;
end;

and it appears it is triggered by line 1517 of lcl/interfaces/gtk2/gtk2wscustomlistview.inc

        lisFocused:
        begin
          //gtk2 iter has no focus??
          Path := gtk_tree_path_new_from_string(PChar(IntToStr(AIndex)));
          if GTK_IS_TREE_VIEW(MainView) then
          begin
            if AIsSet then
gtk_tree_view_set_cursor(PGtkTreeView(MainView), Path, nil, False)
            else
            begin
              if (gtk_major_version = 2) and (gtk_minor_version < 14) then
gtk_tree_view_set_cursor(PGtkTreeView(MainView), nil, nil, False) <--- here
              else
gtk_tree_view_set_cursor(PGtkTreeView(MainView), Path, nil, False);
            end;
          end
          else
          if GTK_IS_ICON_VIEW(MainView) then
gtk_icon_view_set_cursor(PGtkIconView(MainView), Path, nil, False);
          gtk_tree_path_free(Path);
        end;



I changed the call to look like the one for gtk >= 2.14 (i.e, Path instead of nil) and now I can open the options dialog. I really don't know gtk2, but maybe the differentiation is needed for an earlier version of gtk and not 2.14?

Bye
--
Luca Olivetti
Wetron Automation Technology http://www.wetron.es/
Tel. +34 93 5883004 (Ext.3010)  Fax +34 93 5883007
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus-ide.org/listinfo/lazarus

Reply via email to