Skip to content

Commit 18e1766

Browse files
committed
merge revision(s) 2bb6fe3: [Backport #21629]
[PATCH] [Bug #21629] Initialize `struct RString` which appears to be missed in the previous commit for some reason.
1 parent 846bb76 commit 18e1766

File tree

9 files changed

+19
-16
lines changed

9 files changed

+19
-16
lines changed

error.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2628,7 +2628,7 @@ name_err_mesg_to_str(VALUE obj)
26282628
VALUE mesg = ptr->mesg;
26292629
if (NIL_P(mesg)) return Qnil;
26302630
else {
2631-
struct RString s_str, c_str, d_str;
2631+
struct RString s_str = {RBASIC_INIT}, c_str = {RBASIC_INIT}, d_str = {RBASIC_INIT};
26322632
VALUE c, s, d = 0, args[4], c2;
26332633
int state = 0;
26342634
rb_encoding *usascii = rb_usascii_encoding();

ext/-test-/string/fstring.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ VALUE
1212
bug_s_fstring_fake_str(VALUE self)
1313
{
1414
static const char literal[] = "abcdefghijklmnopqrstuvwxyz";
15-
struct RString fake_str;
15+
struct RString fake_str = {RBASIC_INIT};
1616
return rb_str_to_interned_str(rb_setup_fake_str(&fake_str, literal, sizeof(literal) - 1, 0));
1717
}
1818

include/ruby/internal/core/rbasic.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,9 @@ RBasic {
102102
klass(RBIMPL_VALUE_NULL)
103103
{
104104
}
105+
# define RBASIC_INIT RBasic()
106+
#else
107+
# define RBASIC_INIT {RBIMPL_VALUE_NULL}
105108
#endif
106109
};
107110

include/ruby/internal/core/rstring.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,7 @@ rbimpl_rstring_getmem(VALUE str)
395395
}
396396
else {
397397
/* Expecting compilers to optimize this on-stack struct away. */
398-
struct RString retval;
398+
struct RString retval = {RBASIC_INIT};
399399
retval.len = RSTRING_LEN(str);
400400
retval.as.heap.ptr = RSTRING(str)->as.embed.ary;
401401
return retval;

load.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1382,7 +1382,7 @@ rb_require_internal(VALUE fname)
13821382
int
13831383
ruby_require_internal(const char *fname, unsigned int len)
13841384
{
1385-
struct RString fake;
1385+
struct RString fake = {RBASIC_INIT};
13861386
VALUE str = rb_setup_fake_str(&fake, fname, len, 0);
13871387
rb_execution_context_t *ec = GET_EC();
13881388
int result = require_internal(ec, str, 0, RTEST(ruby_verbose));
@@ -1424,7 +1424,7 @@ rb_require_string_internal(VALUE fname, bool resurrect)
14241424
VALUE
14251425
rb_require(const char *fname)
14261426
{
1427-
struct RString fake;
1427+
struct RString fake = {RBASIC_INIT};
14281428
VALUE str = rb_setup_fake_str(&fake, fname, strlen(fname), 0);
14291429
return rb_require_string_internal(str, true);
14301430
}

marshal.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1423,7 +1423,7 @@ long
14231423
ruby_marshal_read_long(const char **buf, long len)
14241424
{
14251425
long x;
1426-
struct RString src;
1426+
struct RString src = {RBASIC_INIT};
14271427
struct load_arg arg;
14281428
memset(&arg, 0, sizeof(arg));
14291429
arg.src = rb_setup_fake_str(&src, *buf, len, 0);

string.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -609,14 +609,14 @@ rb_setup_fake_str(struct RString *fake_str, const char *name, long len, rb_encod
609609
VALUE
610610
rb_fstring_new(const char *ptr, long len)
611611
{
612-
struct RString fake_str;
612+
struct RString fake_str = {RBASIC_INIT};
613613
return register_fstring(setup_fake_str(&fake_str, ptr, len, ENCINDEX_US_ASCII), false, false);
614614
}
615615

616616
VALUE
617617
rb_fstring_enc_new(const char *ptr, long len, rb_encoding *enc)
618618
{
619-
struct RString fake_str;
619+
struct RString fake_str = {RBASIC_INIT};
620620
return register_fstring(rb_setup_fake_str(&fake_str, ptr, len, enc), false, false);
621621
}
622622

@@ -12514,7 +12514,7 @@ rb_str_to_interned_str(VALUE str)
1251412514
VALUE
1251512515
rb_interned_str(const char *ptr, long len)
1251612516
{
12517-
struct RString fake_str;
12517+
struct RString fake_str = {RBASIC_INIT};
1251812518
return register_fstring(setup_fake_str(&fake_str, ptr, len, ENCINDEX_US_ASCII), true, false);
1251912519
}
1252012520

@@ -12531,7 +12531,7 @@ rb_enc_interned_str(const char *ptr, long len, rb_encoding *enc)
1253112531
rb_enc_autoload(enc);
1253212532
}
1253312533

12534-
struct RString fake_str;
12534+
struct RString fake_str = {RBASIC_INIT};
1253512535
return register_fstring(rb_setup_fake_str(&fake_str, ptr, len, enc), true, false);
1253612536
}
1253712537

@@ -12542,7 +12542,7 @@ rb_enc_literal_str(const char *ptr, long len, rb_encoding *enc)
1254212542
rb_enc_autoload(enc);
1254312543
}
1254412544

12545-
struct RString fake_str;
12545+
struct RString fake_str = {RBASIC_INIT};
1254612546
return register_fstring(rb_setup_fake_str(&fake_str, ptr, len, enc), true, true);
1254712547
}
1254812548

symbol.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,7 @@ ID
753753
rb_intern3(const char *name, long len, rb_encoding *enc)
754754
{
755755
VALUE sym;
756-
struct RString fake_str;
756+
struct RString fake_str = {RBASIC_INIT};
757757
VALUE str = rb_setup_fake_str(&fake_str, name, len, enc);
758758
OBJ_FREEZE(str);
759759
sym = lookup_str_sym(str);
@@ -1215,7 +1215,7 @@ rb_check_symbol(volatile VALUE *namep)
12151215
ID
12161216
rb_check_id_cstr(const char *ptr, long len, rb_encoding *enc)
12171217
{
1218-
struct RString fake_str;
1218+
struct RString fake_str = {RBASIC_INIT};
12191219
const VALUE name = rb_setup_fake_str(&fake_str, ptr, len, enc);
12201220

12211221
sym_check_asciionly(name, true);
@@ -1227,7 +1227,7 @@ VALUE
12271227
rb_check_symbol_cstr(const char *ptr, long len, rb_encoding *enc)
12281228
{
12291229
VALUE sym;
1230-
struct RString fake_str;
1230+
struct RString fake_str = {RBASIC_INIT};
12311231
const VALUE name = rb_setup_fake_str(&fake_str, ptr, len, enc);
12321232

12331233
sym_check_asciionly(name, true);
@@ -1251,7 +1251,7 @@ FUNC_MINIMIZED(VALUE rb_sym_intern_ascii_cstr(const char *ptr));
12511251
VALUE
12521252
rb_sym_intern(const char *ptr, long len, rb_encoding *enc)
12531253
{
1254-
struct RString fake_str;
1254+
struct RString fake_str = {RBASIC_INIT};
12551255
const VALUE name = rb_setup_fake_str(&fake_str, ptr, len, enc);
12561256
return rb_str_intern(name);
12571257
}

version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
1212
#define RUBY_VERSION_TEENY 7
1313
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
14-
#define RUBY_PATCHLEVEL 59
14+
#define RUBY_PATCHLEVEL 60
1515

1616
#include "ruby/version.h"
1717
#include "ruby/internal/abi.h"

0 commit comments

Comments
 (0)