diff options
author | Ali Polatel <alip@exherbo.org> | 2010-05-26 18:54:25 +0300 |
---|---|---|
committer | Ali Polatel <alip@exherbo.org> | 2010-06-06 09:17:47 +0300 |
commit | c7893408bbe6904ae7da97aa203587af4ec2fac7 (patch) | |
tree | 9139c51aff243eb0fdfaac35d75c557c0f7de29e /bindings/ruby/filenames.c | |
parent | 35925e6e5be58ca33d8f40f1d6ec44b4e7799713 (diff) |
ruby: Kill garbage collection related cruft.
Let the user destroy objects that she wants explicitly.
It's not possible to specify the order objects are garbage collected.
See id:86y6f8v838.fsf@harikalardiyari.ev on ruby-talk for more
information.
Diffstat (limited to 'bindings/ruby/filenames.c')
-rw-r--r-- | bindings/ruby/filenames.c | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/bindings/ruby/filenames.c b/bindings/ruby/filenames.c index 44a16522..23553ab1 100644 --- a/bindings/ruby/filenames.c +++ b/bindings/ruby/filenames.c @@ -21,6 +21,23 @@ #include "defs.h" /* + * call-seq: FILENAMES.destroy => nil + * + * Destroys the filenames, freeing all resources allocated for it. + */ +VALUE +notmuch_rb_filenames_destroy(VALUE self) +{ + notmuch_filenames_t *fnames; + + Data_Get_Struct(self, notmuch_filenames_t, fnames); + + notmuch_filenames_destroy(fnames); + + return Qnil; +} + +/* * call-seq: FILENAMES.each {|item| block } => FILENAMES * * Calls +block+ once for each element in +self+, passing that element as a @@ -29,15 +46,14 @@ VALUE notmuch_rb_filenames_each(VALUE self) { - notmuch_rb_filenames_t *flist; + notmuch_filenames_t *fnames; - Data_Get_Struct(self, notmuch_rb_filenames_t, flist); - if (!flist->nm_flist) + Data_Get_Struct(self, notmuch_filenames_t, fnames); + if (!fnames) return self; - for (; notmuch_filenames_valid(flist->nm_flist); - notmuch_filenames_move_to_next(flist->nm_flist)) - rb_yield(rb_str_new2(notmuch_filenames_get(flist->nm_flist))); + for (; notmuch_filenames_valid(fnames); notmuch_filenames_move_to_next(fnames)) + rb_yield(rb_str_new2(notmuch_filenames_get(fnames))); return self; } |