Hi, On Sun, Apr 22, 2012 at 3:07 PM, Justus Winter <4winter at informatik.uni-hamburg.de> wrote: > Adapt the ruby bindings to the notmuch_database_close split. > > Signed-off-by: Justus Winter <4winter at informatik.uni-hamburg.de> > --- > ?bindings/ruby/database.c | ? ?2 +- > ?1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/bindings/ruby/database.c b/bindings/ruby/database.c > index 982fd59..ba9a139 100644 > --- a/bindings/ruby/database.c > +++ b/bindings/ruby/database.c > @@ -110,7 +110,7 @@ notmuch_rb_database_close (VALUE self) > ? ? notmuch_database_t *db; > > ? ? Data_Get_Notmuch_Database (self, db); > - ? ?notmuch_database_close (db); > + ? ?notmuch_database_destroy (db); > ? ? DATA_PTR (self) = NULL; > > ? ? return Qnil; > --
I don't think this is the right approach. If database_destroy truly destroys the object, then we would want to do it only at garbage collection, when it's not accessible any more. What if I want to re-use the database from the Ruby code? This would probably be better: -- a/bindings/ruby/database.c +++ b/bindings/ruby/database.c @@ -20,10 +20,16 @@ #include "defs.h" +static void +database_free (void *p) +{ + notmuch_database_destroy (p); +} + VALUE notmuch_rb_database_alloc (VALUE klass) { - return Data_Wrap_Struct (klass, NULL, NULL, NULL); + return Data_Wrap_Struct (klass, NULL, database_free, NULL); } /* -- Felipe Contreras