On Sat, Mar 22, 2008 at 10:58 PM, Mark Johnson <[EMAIL PROTECTED]> wrote: > > Vivien Malerba wrote: > >> > > >> I don't think I have 2 references to the connection. I've attached a > >> current snapshot of my file to let you see it. It's a work in progress > >> for a test case for one of my bugs. > >> > > > > The problem comes from the fact that when you call > > g_object_unref(pConn), there is still an object holding a reference on > > the pConn object, it is the GdaDataModel returned from the > > gda_connection_statement_execute_select() function (which you ignore > > in your example but still exists). Here is attached your example, > > modified to show the reference count on the pConn object. > > > > Cheers, > > > > Vivien > > > Thanks, that fixed it. The g_object_unref now does close the > connection, so no unexpected EOF in the PostgreSQL log. > > This is something I find difficult in glib/gnome programming in general > - how to know when something needs to be unref'ed, and when something > else might be keeping a reference to your object. For example, nothing > in the gda_connection_statement_execute or > gda_connection_statement_execute_select documentation indicates that the > connection reference count will be incremented. The GdaDataModel page > does not even contain the word connection.
The idea is that for any function which creates a new object, then you need to call g_object_unref() on the object, otherwise you must consider that the returned object is valid only within your function body (and if you wat to keep it, call g_object_ref() and g_object_unref() when done with it). The reason the GdaDataModel keeps a reference on the connection is that some implementations need to execute some queries when they are used (like for cursor based access and for the soon-to-come dete model modification). Don't hesitate to signal any part of the doc you find misleading or unclear about that point. Cheers, Vivien _______________________________________________ gnome-db-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/gnome-db-list
