Do strings from rb_str_new and friends need to be free'd?

  • Thread starter Steven Kah Hien Wong
  • Start date
S

Steven Kah Hien Wong

[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
 
S

Steven Kah Hien Wong

[Note: parts of this message were removed to make it a legal post.]

Ah, cool. Thanks, Matz!

-Steven
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,534
Members
45,008
Latest member
Rahul737

Latest Threads

Top