From 7bdd8b7ce2396a5bb9616cb50fd2c23fa83b8b2f Mon Sep 17 00:00:00 2001 From: Jakob Rath <git@jakobrath.eu> Date: Fri, 15 Nov 2013 14:26:00 +0100 Subject: [PATCH] Free parse result. --- src/bindings/ruby/lib/hammer/internal.rb | 2 +- src/bindings/ruby/lib/hammer/parser.rb | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/bindings/ruby/lib/hammer/internal.rb b/src/bindings/ruby/lib/hammer/internal.rb index 0083ebd9..4fadb500 100644 --- a/src/bindings/ruby/lib/hammer/internal.rb +++ b/src/bindings/ruby/lib/hammer/internal.rb @@ -53,7 +53,7 @@ module Hammer # h_bind_indirect # free the parse result - # h_parse_result_free + attach_function :h_parse_result_free, [:pointer], :void # TODO: Does the HParser* need to be freed? end diff --git a/src/bindings/ruby/lib/hammer/parser.rb b/src/bindings/ruby/lib/hammer/parser.rb index 5d1e8e57..79e03705 100644 --- a/src/bindings/ruby/lib/hammer/parser.rb +++ b/src/bindings/ruby/lib/hammer/parser.rb @@ -9,8 +9,10 @@ module Hammer def parse(data) raise RuntimeError, '@h_parser is nil' if @h_parser.nil? raise ArgumentError, 'expecting a String' unless data.is_a? String # TODO: Not needed, FFI checks that. - result = Hammer::Internal.h_parse(@h_parser, data, data.length); + result = Hammer::Internal.h_parse(@h_parser, data, data.length) # TODO: Do something with the data + # (wrap in garbage-collected object, call h_parse_result_free when destroyed by GC) + Hammer::Internal.h_parse_result_free(result) !result.null? end -- GitLab