com gtk/php-gtk: - Fix crash in GtkListStore::insert(); - Add GtkListStore::prepend() (patch by Scott Mattocks): ext/gtk+/gtktreeview.overrides

[email protected] (David Soria Parra) Wed, 19 Oct 2005 20:38:31 +0000
Newsgroups php.gtk.cvs
Message-ID <[email protected]>
Commit:    b9c7d5ab90ee0a2808e0537c860d5d3ebf333c9f
Author:    Andrei Zmievski <[email protected]>         Wed, 19 Oct 2005 20:38:31 +0000
Parents:   ab10d82c0135bb8f813439808159d1606b2569ca
Branches:  master

Link:       http://git.php.net/?p=gtk/php-gtk.git;a=commitdiff;h=b9c7d5ab90ee0a2808e0537c860d5d3ebf333c9f

Log:
- Fix crash in GtkListStore::insert();
- Add GtkListStore::prepend() (patch by Scott Mattocks)

Changed paths:
  M  ext/gtk+/gtktreeview.overrides


Diff:
b9c7d5ab90ee0a2808e0537c860d5d3ebf333c9f
diff --git a/ext/gtk+/gtktreeview.overrides b/ext/gtk+/gtktreeview.overrides
index e66af3d..b3ae09c 100644
--- a/ext/gtk+/gtktreeview.overrides
+++ b/ext/gtk+/gtktreeview.overrides
@@ -161,11 +161,32 @@ PHP_METHOD
 }
 
 %%
+override gtk_list_store_prepend
+PHP_METHOD
+{
+    GtkTreeIter iter;
+    zval *items = NULL;
+
+    NOT_STATIC_METHOD();
+
+    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|a", &items))
+        return;
+
+    gtk_list_store_prepend(GTK_LIST_STORE(PHPG_GOBJECT(this_ptr)), &iter);
+
+    if (items && phpg_model_set_row(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), &iter, items) == FAILURE)
+        return;
+
+    phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
+}
+
+%%
 override gtk_list_store_insert
 PHP_METHOD
 {
     GtkTreeIter iter;
     GtkTreeModel *model;
+    GObject *obj;
     gint position;
     zval *items = NULL;
 
@@ -194,12 +215,13 @@ PHP_METHOD
             return;
         }
 
-        columns = safe_emalloc(n_cols, sizeof(gint), 0);
-        values  = safe_emalloc(n_cols, sizeof(GValue), 0);
+        columns = ecalloc(n_cols, sizeof(gint));
+        values  = ecalloc(n_cols, sizeof(GValue));
 
         for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(items)), i = 0;
              zend_hash_get_current_data(Z_ARRVAL_P(items), (void **)&item) == SUCCESS;
              zend_hash_move_forward(Z_ARRVAL_P(items)), i++) {
+
             g_value_init(&values[i], gtk_tree_model_get_column_type(model, i));
 
             if (phpg_gvalue_from_zval(&values[i], *item TSRMLS_CC) == FAILURE) {