C GTK - 尝试获取 TreeView 中最后一项的索引号时出现 SIGSEGV

C GTK - SIGSEGV when trying to get index number of last item in TreeView

我正在尝试获取 GTK TreeView 中所选项目的索引值,以便使用该索引从匹配的值数组中删除该值。我的代码成功地为 TreeView 中的所有项目执行了此操作,但列表中的最后一项除外。尝试删除最后一项时出现此错误:

(SDS-CW:32229): Gtk-CRITICAL **: 00:07:38.494: gtk_list_store_get_path: assertion 'iter->stamp == priv->stamp' failed

(SDS-CW:32229): Gtk-CRITICAL **: 00:07:38.494: gtk_tree_path_get_indices: assertion 'path != NULL' failed

这是我的代码:

void remove_hash(GtkWidget *widget, gpointer user_data) {

    struct data *dataStruct = user_data;

    GtkListStore *store;
    GtkTreeModel *model;
    GtkTreeIter iter;
    GtkTreePath *path;
    GtkTreeSelection *selectedHash = dataStruct->selectedHash;
    int removeIndex;

    store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(list)));
    model = gtk_tree_view_get_model(GTK_TREE_VIEW(list));

    if (gtk_tree_model_get_iter_first(model, &iter) == FALSE) {
        return;
    }

    if (gtk_tree_selection_get_selected(GTK_TREE_SELECTION(selectedHash), &model, &iter)) {
        gtk_list_store_remove(store, &iter);
    }

    path = gtk_tree_model_get_path(model, &iter);   <-- This appears to be returning NULL
    removeIndex = *gtk_tree_path_get_indices(path) + 1;   <-- Error occurs here, I believe

    g_print("Remove Index: %i\n", removeIndex);
    g_print("Remove Hash: %s\n", dataStruct->queuedHashes[removeIndex][0]);

    // Function continues below, but error occurs above

有谁知道我可能哪里出错了?

非常感谢任何帮助,谢谢。

根据 Gtk3 docgtk_list_store_remove

Removes the given row from the list store. After being removed, iter is set to be the next valid row, or invalidated if it pointed to the last row in list_store .

调用gtk_list_store_remove前需要获取removeIndex