mirror of
https://github.com/ruby/ruby.git
synced 2026-01-26 04:07:58 +00:00
Combine rb_imemo_tmpbuf_auto_free_pointer and rb_imemo_tmpbuf_new
This commit is contained in:
parent
70210acab0
commit
b0ce1fd549
2
dir.c
2
dir.c
@ -1480,7 +1480,7 @@ rb_dir_getwd_ospath(void)
|
||||
VALUE cwd;
|
||||
VALUE path_guard;
|
||||
|
||||
path_guard = rb_imemo_tmpbuf_auto_free_pointer();
|
||||
path_guard = rb_imemo_tmpbuf_new();
|
||||
path = ruby_getcwd();
|
||||
rb_imemo_tmpbuf_set_ptr(path_guard, path);
|
||||
#ifdef __APPLE__
|
||||
|
||||
15
imemo.c
15
imemo.c
@ -48,23 +48,14 @@ rb_imemo_new(enum imemo_type type, VALUE v0, size_t size)
|
||||
return (VALUE)obj;
|
||||
}
|
||||
|
||||
static rb_imemo_tmpbuf_t *
|
||||
rb_imemo_tmpbuf_new(void)
|
||||
{
|
||||
return IMEMO_NEW(rb_imemo_tmpbuf_t, imemo_tmpbuf, 0);
|
||||
}
|
||||
|
||||
void *
|
||||
rb_alloc_tmp_buffer_with_count(volatile VALUE *store, size_t size, size_t cnt)
|
||||
{
|
||||
void *ptr;
|
||||
rb_imemo_tmpbuf_t *tmpbuf;
|
||||
|
||||
/* Keep the order; allocate an empty imemo first then xmalloc, to
|
||||
* get rid of potential memory leak */
|
||||
tmpbuf = rb_imemo_tmpbuf_new();
|
||||
rb_imemo_tmpbuf_t *tmpbuf = (rb_imemo_tmpbuf_t *)rb_imemo_tmpbuf_new();
|
||||
*store = (VALUE)tmpbuf;
|
||||
ptr = ruby_xmalloc(size);
|
||||
void *ptr = ruby_xmalloc(size);
|
||||
tmpbuf->ptr = ptr;
|
||||
tmpbuf->cnt = cnt;
|
||||
|
||||
@ -97,7 +88,7 @@ rb_free_tmp_buffer(volatile VALUE *store)
|
||||
rb_imemo_tmpbuf_t *
|
||||
rb_imemo_tmpbuf_parser_heap(void *buf, rb_imemo_tmpbuf_t *old_heap, size_t cnt)
|
||||
{
|
||||
rb_imemo_tmpbuf_t *tmpbuf = rb_imemo_tmpbuf_new();
|
||||
rb_imemo_tmpbuf_t *tmpbuf = (rb_imemo_tmpbuf_t *)rb_imemo_tmpbuf_new();
|
||||
tmpbuf->ptr = buf;
|
||||
tmpbuf->next = old_heap;
|
||||
tmpbuf->cnt = cnt;
|
||||
|
||||
@ -138,10 +138,8 @@ static inline enum imemo_type imemo_type(VALUE imemo);
|
||||
static inline int imemo_type_p(VALUE imemo, enum imemo_type imemo_type);
|
||||
static inline bool imemo_throw_data_p(VALUE imemo);
|
||||
static inline struct vm_ifunc *rb_vm_ifunc_proc_new(rb_block_call_func_t func, const void *data);
|
||||
static inline VALUE rb_imemo_tmpbuf_auto_free_pointer(void);
|
||||
static inline void *RB_IMEMO_TMPBUF_PTR(VALUE v);
|
||||
static inline void *rb_imemo_tmpbuf_set_ptr(VALUE v, void *ptr);
|
||||
static inline VALUE rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(VALUE str);
|
||||
static inline void MEMO_V1_SET(struct MEMO *m, VALUE v);
|
||||
static inline void MEMO_V2_SET(struct MEMO *m, VALUE v);
|
||||
|
||||
@ -201,7 +199,7 @@ rb_vm_ifunc_proc_new(rb_block_call_func_t func, const void *data)
|
||||
}
|
||||
|
||||
static inline VALUE
|
||||
rb_imemo_tmpbuf_auto_free_pointer(void)
|
||||
rb_imemo_tmpbuf_new(void)
|
||||
{
|
||||
return rb_imemo_new(imemo_tmpbuf, 0, sizeof(rb_imemo_tmpbuf_t));
|
||||
}
|
||||
@ -220,7 +218,7 @@ rb_imemo_tmpbuf_set_ptr(VALUE v, void *ptr)
|
||||
}
|
||||
|
||||
static inline VALUE
|
||||
rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(VALUE str)
|
||||
rb_imemo_tmpbuf_new_from_an_RString(VALUE str)
|
||||
{
|
||||
const void *src;
|
||||
VALUE imemo;
|
||||
@ -230,7 +228,7 @@ rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(VALUE str)
|
||||
|
||||
StringValue(str);
|
||||
/* create tmpbuf to keep the pointer before xmalloc */
|
||||
imemo = rb_imemo_tmpbuf_auto_free_pointer();
|
||||
imemo = rb_imemo_tmpbuf_new();
|
||||
tmpbuf = (rb_imemo_tmpbuf_t *)imemo;
|
||||
len = RSTRING_LEN(str);
|
||||
src = RSTRING_PTR(str);
|
||||
|
||||
@ -2635,7 +2635,7 @@ rb_exec_fillarg(VALUE prog, int argc, VALUE *argv, VALUE env, VALUE opthash, VAL
|
||||
}
|
||||
rb_str_buf_cat(argv_str, (char *)&null, sizeof(null)); /* terminator for execve. */
|
||||
eargp->invoke.cmd.argv_str =
|
||||
rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(argv_str);
|
||||
rb_imemo_tmpbuf_new_from_an_RString(argv_str);
|
||||
}
|
||||
RB_GC_GUARD(execarg_obj);
|
||||
}
|
||||
@ -2726,7 +2726,7 @@ open_func(void *ptr)
|
||||
static void
|
||||
rb_execarg_allocate_dup2_tmpbuf(struct rb_execarg *eargp, long len)
|
||||
{
|
||||
VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
|
||||
VALUE tmpbuf = rb_imemo_tmpbuf_new();
|
||||
rb_imemo_tmpbuf_set_ptr(tmpbuf, ruby_xmalloc(run_exec_dup2_tmpbuf_size(len)));
|
||||
eargp->dup2_tmpbuf = tmpbuf;
|
||||
}
|
||||
@ -2830,7 +2830,7 @@ rb_execarg_parent_start1(VALUE execarg_obj)
|
||||
p = NULL;
|
||||
rb_str_buf_cat(envp_str, (char *)&p, sizeof(p));
|
||||
eargp->envp_str =
|
||||
rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(envp_str);
|
||||
rb_imemo_tmpbuf_new_from_an_RString(envp_str);
|
||||
eargp->envp_buf = envp_buf;
|
||||
|
||||
/*
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user