mirror of
https://github.com/ruby/ruby.git
synced 2026-01-27 12:34:21 +00:00
[Bug #21629] Initialize struct RString
This commit is contained in:
parent
43dbb9a93f
commit
2bb6fe3854
Notes:
git
2025-10-08 10:43:02 +00:00
2
error.c
2
error.c
@ -2619,7 +2619,7 @@ name_err_mesg_to_str(VALUE obj)
|
||||
VALUE mesg = ptr->mesg;
|
||||
if (NIL_P(mesg)) return Qnil;
|
||||
else {
|
||||
struct RString s_str, c_str, d_str;
|
||||
struct RString s_str = {RBASIC_INIT}, c_str = {RBASIC_INIT}, d_str = {RBASIC_INIT};
|
||||
VALUE c, s, d = 0, args[4], c2;
|
||||
int state = 0;
|
||||
rb_encoding *usascii = rb_usascii_encoding();
|
||||
|
||||
@ -12,7 +12,7 @@ VALUE
|
||||
bug_s_fstring_fake_str(VALUE self)
|
||||
{
|
||||
static const char literal[] = "abcdefghijklmnopqrstuvwxyz";
|
||||
struct RString fake_str;
|
||||
struct RString fake_str = {RBASIC_INIT};
|
||||
return rb_str_to_interned_str(rb_setup_fake_str(&fake_str, literal, sizeof(literal) - 1, 0));
|
||||
}
|
||||
|
||||
|
||||
@ -115,6 +115,9 @@ RBasic {
|
||||
#endif
|
||||
{
|
||||
}
|
||||
# define RBASIC_INIT RBasic()
|
||||
#else
|
||||
# define RBASIC_INIT {RBIMPL_VALUE_NULL}
|
||||
#endif
|
||||
};
|
||||
|
||||
|
||||
@ -395,7 +395,7 @@ rbimpl_rstring_getmem(VALUE str)
|
||||
}
|
||||
else {
|
||||
/* Expecting compilers to optimize this on-stack struct away. */
|
||||
struct RString retval;
|
||||
struct RString retval = {RBASIC_INIT};
|
||||
retval.len = RSTRING_LEN(str);
|
||||
retval.as.heap.ptr = RSTRING(str)->as.embed.ary;
|
||||
return retval;
|
||||
|
||||
4
load.c
4
load.c
@ -1434,7 +1434,7 @@ rb_require_internal(VALUE fname)
|
||||
int
|
||||
ruby_require_internal(const char *fname, unsigned int len)
|
||||
{
|
||||
struct RString fake;
|
||||
struct RString fake = {RBASIC_INIT};
|
||||
VALUE str = rb_setup_fake_str(&fake, fname, len, 0);
|
||||
rb_execution_context_t *ec = GET_EC();
|
||||
int result = require_internal(ec, str, 0, RTEST(ruby_verbose));
|
||||
@ -1476,7 +1476,7 @@ rb_require_string_internal(VALUE fname, bool resurrect)
|
||||
VALUE
|
||||
rb_require(const char *fname)
|
||||
{
|
||||
struct RString fake;
|
||||
struct RString fake = {RBASIC_INIT};
|
||||
VALUE str = rb_setup_fake_str(&fake, fname, strlen(fname), 0);
|
||||
return rb_require_string_internal(str, true);
|
||||
}
|
||||
|
||||
@ -1428,7 +1428,7 @@ long
|
||||
ruby_marshal_read_long(const char **buf, long len)
|
||||
{
|
||||
long x;
|
||||
struct RString src;
|
||||
struct RString src = {RBASIC_INIT};
|
||||
struct load_arg arg;
|
||||
memset(&arg, 0, sizeof(arg));
|
||||
arg.src = rb_setup_fake_str(&src, *buf, len, 0);
|
||||
|
||||
12
string.c
12
string.c
@ -655,14 +655,14 @@ rb_setup_fake_str(struct RString *fake_str, const char *name, long len, rb_encod
|
||||
VALUE
|
||||
rb_fstring_new(const char *ptr, long len)
|
||||
{
|
||||
struct RString fake_str;
|
||||
struct RString fake_str = {RBASIC_INIT};
|
||||
return register_fstring(setup_fake_str(&fake_str, ptr, len, ENCINDEX_US_ASCII), false, false);
|
||||
}
|
||||
|
||||
VALUE
|
||||
rb_fstring_enc_new(const char *ptr, long len, rb_encoding *enc)
|
||||
{
|
||||
struct RString fake_str;
|
||||
struct RString fake_str = {RBASIC_INIT};
|
||||
return register_fstring(rb_setup_fake_str(&fake_str, ptr, len, enc), false, false);
|
||||
}
|
||||
|
||||
@ -6497,7 +6497,7 @@ str_gsub(int argc, VALUE *argv, VALUE str, int bang)
|
||||
val = rb_obj_as_string(rb_yield(match0));
|
||||
}
|
||||
else {
|
||||
struct RString fake_str;
|
||||
struct RString fake_str = {RBASIC_INIT};
|
||||
VALUE key;
|
||||
if (mode == FAST_MAP) {
|
||||
// It is safe to use a fake_str here because we established that it won't escape,
|
||||
@ -12747,7 +12747,7 @@ rb_str_to_interned_str(VALUE str)
|
||||
VALUE
|
||||
rb_interned_str(const char *ptr, long len)
|
||||
{
|
||||
struct RString fake_str;
|
||||
struct RString fake_str = {RBASIC_INIT};
|
||||
return register_fstring(setup_fake_str(&fake_str, ptr, len, ENCINDEX_US_ASCII), true, false);
|
||||
}
|
||||
|
||||
@ -12764,7 +12764,7 @@ rb_enc_interned_str(const char *ptr, long len, rb_encoding *enc)
|
||||
rb_enc_autoload(enc);
|
||||
}
|
||||
|
||||
struct RString fake_str;
|
||||
struct RString fake_str = {RBASIC_INIT};
|
||||
return register_fstring(rb_setup_fake_str(&fake_str, ptr, len, enc), true, false);
|
||||
}
|
||||
|
||||
@ -12775,7 +12775,7 @@ rb_enc_literal_str(const char *ptr, long len, rb_encoding *enc)
|
||||
rb_enc_autoload(enc);
|
||||
}
|
||||
|
||||
struct RString fake_str;
|
||||
struct RString fake_str = {RBASIC_INIT};
|
||||
return register_fstring(rb_setup_fake_str(&fake_str, ptr, len, enc), true, true);
|
||||
}
|
||||
|
||||
|
||||
8
symbol.c
8
symbol.c
@ -845,7 +845,7 @@ lookup_id_str(ID id)
|
||||
ID
|
||||
rb_intern3(const char *name, long len, rb_encoding *enc)
|
||||
{
|
||||
struct RString fake_str;
|
||||
struct RString fake_str = {RBASIC_INIT};
|
||||
VALUE str = rb_setup_fake_str(&fake_str, name, len, enc);
|
||||
OBJ_FREEZE(str);
|
||||
|
||||
@ -1222,7 +1222,7 @@ rb_check_symbol(volatile VALUE *namep)
|
||||
ID
|
||||
rb_check_id_cstr(const char *ptr, long len, rb_encoding *enc)
|
||||
{
|
||||
struct RString fake_str;
|
||||
struct RString fake_str = {RBASIC_INIT};
|
||||
const VALUE name = rb_setup_fake_str(&fake_str, ptr, len, enc);
|
||||
|
||||
sym_check_asciionly(name, true);
|
||||
@ -1234,7 +1234,7 @@ VALUE
|
||||
rb_check_symbol_cstr(const char *ptr, long len, rb_encoding *enc)
|
||||
{
|
||||
VALUE sym;
|
||||
struct RString fake_str;
|
||||
struct RString fake_str = {RBASIC_INIT};
|
||||
const VALUE name = rb_setup_fake_str(&fake_str, ptr, len, enc);
|
||||
|
||||
sym_check_asciionly(name, true);
|
||||
@ -1258,7 +1258,7 @@ FUNC_MINIMIZED(VALUE rb_sym_intern_ascii_cstr(const char *ptr));
|
||||
VALUE
|
||||
rb_sym_intern(const char *ptr, long len, rb_encoding *enc)
|
||||
{
|
||||
struct RString fake_str;
|
||||
struct RString fake_str = {RBASIC_INIT};
|
||||
const VALUE name = rb_setup_fake_str(&fake_str, ptr, len, enc);
|
||||
return rb_str_intern(name);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user