Issue #13252 has been updated by Nobuyoshi Nakada.

Description updated

It is not guaranteed that `ruby_xfree` can free a pointer allocated by other than `ruby_xmalloc` and so on.
You can't mix bare `malloc` and `ruby_xfree`.

----------------------------------------
Feature #13252: C API for creating strings without copying
https://bugs.ruby-lang.org/issues/13252#change-63190

* Author: Aaron Patterson
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
Hi,

I'd like to have a C API that allows me to create String objects without copying the underlying `char *`.  Basically a C API similar to the `rb_str_new_static`, but have the GC free the underlying `char *` when the object dies.  The use case is that at work we have C libraries that allocate `char *` and we want to pass those to Ruby land without copying the buffer.  Here is an example of what we're doing now:

  https://github.com/arthurnn/memcached/commit/1886546944b420dc6953096ba1f5eae772001e31#diff-f508f9b8263ea397534b2b3f8efed987R147

I'd like it if there was a public API for doing something like this.

Thank you!

P.S. I am sure I can't be the first to ask for this, but I couldn't find a similar issue in RedMine, so if this has been answered I apologize.
P.P.S. I've added a patch for kind of what I want.


---Files--------------------------------
out.diff (1.66 KB)


-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>