(This is in libgda-3.0. I haven't looked at this in trunk.)

Should the result of gda_data_model_row_get_row() (or the
GdaDataModelRowClass::get_row() vfunc) be unrefed? It has no
documentation. The postgres implementation always returns a new
instance:

static GdaRow *
get_row (GdaDataModel *model, GdaPostgresRecordsetPrivate *priv, gint
rownum, GError **error)
{
        gchar *thevalue;
        GType ftype;
        gboolean isNull;
        GValue *value;
        GdaRow *row;
        gint i;
        gchar *id;
        gint length;
        
        row = gda_row_new (model, priv->ncolumns);
...
}


but the row is not unrefed when used, for instance here:

static gboolean
gda_data_model_row_set_value_at (GdaDataModel *model, gint col, gint
row, 
                                 const GValue *value, GError **error)
{
        GdaRow *gdarow;

        g_return_val_if_fail (GDA_IS_DATA_MODEL_ROW (model), FALSE);
        g_return_val_if_fail (row >= 0, FALSE);
        g_return_val_if_fail (CLASS (model)->update_row != NULL, FALSE);
        g_return_val_if_fail (CLASS (model)->get_row != NULL, FALSE);

        if (((GdaDataModelRow *)model)->priv->read_only) {
                g_warning ("Attempting to modify a read-only data model");
                return FALSE;
        }

        gdarow = CLASS (model)->get_row (GDA_DATA_MODEL_ROW (model), row,
error);
        if (gdarow) {
                gda_row_set_value (gdarow, col, value);
                return CLASS (model)->update_row (GDA_DATA_MODEL_ROW (model), 
gdarow,
error);
        }
        else
                return FALSE;
}


or here:

static const GValue *
gda_postgres_recordset_get_value_at (GdaDataModelRow *model, gint col,
gint row)
{
        ...
        
        row_list = get_row (GDA_DATA_MODEL (model), priv_data, row, NULL);
        gda_data_model_hash_insert_row (GDA_DATA_MODEL_HASH (model),
                                         row, row_list);
        return gda_row_get_value (row_list, col);
}


-- 
[EMAIL PROTECTED]
www.murrayc.com
www.openismus.com

_______________________________________________
gnome-db-list mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/gnome-db-list

Reply via email to