Issue #11231 has been updated by Nobuyoshi Nakada.

Description updated
Status changed from Open to Closed

Benoit Daloze wrote:
> `rb_alloc_tmp_buffer()` is declared in `include/ruby/intern.h`.

`include/ruby/ruby.h`.

> There was a try to specify it in
> https://github.com/rubinius/rubinius/commit/bf0a6b988661d3917e9dcea62746b07b5f6d00ca
> but this results in SEGV on MRI (I guess it is not intended usage of the API, but what would be correct usage?).
> 
> It is used in the `ALLOCV()` macro, which is maybe the reason why this is part of the header?

Yes, exactly.

> Is there a way to hide such internal function?
> Or is it on purpose declared publicly?

It's similar to `alloca()`, the result should be used only in single function.

----------------------------------------
Bug #11231: Should rb_alloc_tmp_buffer() be public API?
https://bugs.ruby-lang.org/issues/11231#change-52784

* Author: Benoit Daloze
* Status: Closed
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
`rb_alloc_tmp_buffer()` is declared in `include/ruby/intern.h`.

However it seems this is a fairly internal API as it deals with a `VALUE` pointer and has undocumented liveliness/GC behavior.

There was a try to specify it in
https://github.com/rubinius/rubinius/commit/bf0a6b988661d3917e9dcea62746b07b5f6d00ca
but this results in SEGV on MRI (I guess it is not intended usage of the API, but what would be correct usage?).

It is used in the `ALLOCV()` macro, which is maybe the reason why this is part of the header?

Is there a way to hide such internal function?
Or is it on purpose declared publicly?



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