|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
[Note: parts of this message were removed to make it a legal post.]
Hi, I have some C native code that calls a logging class written in Ruby. To pass the message string to the Ruby class, I am creating a string with rb_str_new2 and then passing its VALUE to rb_funcall. I am wondering if I need to do any clean-up for the string, or will Ruby handle this for me? Also, if anyone can suggest an awesome doc on writing Ruby native extensions, that would be appreciated. At the moment, I am mostly using the Pickaxe online book. Here is the code in question: void log_warning(const char *fmt, ...) { char message[BUFFER_LEN]; // Temporary buffer to hold the generated message // Evaluate the format string and store it in the temporary buffer va_list ap; va_start(ap, fmt); vsnprintf(message, BUFFER_LEN, fmt, ap); va_end(ap); // Find the ID's to call tho Log.warning Ruby class method rb_require("log"); ID log_class = rb_path2class("Log"); ID log_warning_method = rb_intern("warning"); // Create a Ruby string containing a copy of the formatted message VALUE message_value = rb_str_new2(message); // Call Log.warning, with the formatted message as an argument rb_funcall(log_class, log_warning_method, 1, message_value); // Do I need to do anything here to tell Ruby to clean up the string? } Thanks! -Steven |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
[Note: parts of this message were removed to make it a legal post.]
Ah, cool. Thanks, Matz! -Steven On Sat, May 10, 2008 at 1:36 PM, Yukihiro Matsumoto <matz@ruby-lang.org> wrote: > Hi, > > In message "Re: Do strings from rb_str_new and friends need to be free'd?" > on Sat, 10 May 2008 12:21:57 +0900, "Steven Kah Hien Wong" < > steven@zensaki.com> writes: > > |I have some C native code that calls a logging class written in Ruby. To > |pass the message string to the Ruby class, I am creating a string with > |rb_str_new2 and then passing its VALUE to rb_funcall. I am wondering if I > |need to do any clean-up for the string, or will Ruby handle this for me? > > The latter. You don't have to (and you shouldn't) free string > objects. > > matz. > > |
|
![]() |
| Outils de la discussion | |
|
|