在我的应用程序中,我有一个GtkIconView单选模式。我想要获取所选项目的文本(并按照该行进一步采取行动)。现在,我有一些我瘦的代码可以工作,但是实际得到的GtkTreePath会使程序崩溃(segfault)。Vala/GTK + 3:从GtkIconView获取数据
Program received signal SIGSEGV, Segmentation fault.
0x0804d350 in minkovsky_ufilter_ufilter_window_on_filter_selected (
e=0x8172010, self=0x8354d80)
at /home/filip/ufilter/src/UfilterWindow.vala:281
281 TreePath item = filterchooser.get_selected_items().data;
你能告诉我为什么发生了(以及如何解决它)?
谢谢。
编辑:我做了一些更多的测试,但他们仍然没有定论。也就是说,我想检查是否get_selected_items()
返回null(导致问题),但它只是在新的地方再次分段。这是代码:
[CCode (instance_pos = -1)]
public void on_filter_selected (Event e) {
if(filterchooser.get_selected_items() == null){ // <-- Now happens here
stderr.printf("Null!");
return;
}
TreePath item = filterchooser.get_selected_items().data; // <-- Used to happen here
TreeIter iter;
string selection;
filterchooser_liststore.get_iter(out iter, item);
filterchooser_liststore.get(iter, 0, out selection);
stderr.printf("Selected filter: %s\n", selection);
}
编辑2:这是stripped-down version。它包含:两个源文件,一个glade文件和示例图像,以及一个带有编译命令的自述文件。您将需要Valac v0.16,GTK + 3.0和GModule 2.0(我可以将它进一步剥离下来,但它只是缺少一点:在生产代码中需要这些)。仍然段错误。
没有人可以告诉你,除非你显示的代码崩溃。 – ptomato 2012-07-05 16:14:00
嗯,在这里。我只是想先做一些测试。 – FLamparski 2012-07-05 17:02:28
filterchooser null?如果不是这样,那么如果你可以发布一个最小但可执行的测试用例会很有帮助(见http://sscce.org) - 我没有发现任何与你上面有什么内在的错误。 – nemequ 2012-07-06 01:04:31