mirror of
https://github.com/ruby/ruby.git
synced 2026-01-27 04:24:23 +00:00
merge revision(s) 43dbb9a93f4de3f1170d7d18641c30e81cc08365, 2bb6fe3854e2a4854bb89bfce4eaaea9d848fd1b, 7c9dd0ecff61153b96473c6c51d5582e809da489: [Backport #21629]
[PATCH] [Bug #21629] Enable `nonstring` attribute on clang 21 [PATCH] [Bug #21629] Initialize `struct RString` [PATCH] [Bug #21629] Initialize `struct RArray`
This commit is contained in:
parent
a8f488482a
commit
5a8d764216
2
error.c
2
error.c
@ -2321,7 +2321,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();
|
||||
|
||||
@ -14,7 +14,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_fstring(rb_setup_fake_str(&fake_str, literal, sizeof(literal) - 1, 0));
|
||||
}
|
||||
|
||||
|
||||
@ -25,8 +25,16 @@
|
||||
/** Wraps (or simulates) `__attribute__((nonstring))` */
|
||||
#if RBIMPL_HAS_ATTRIBUTE(nonstring)
|
||||
# define RBIMPL_ATTR_NONSTRING() __attribute__((nonstring))
|
||||
# if RBIMPL_COMPILER_SINCE(GCC, 15, 0, 0)
|
||||
# define RBIMPL_ATTR_NONSTRING_ARRAY() RBIMPL_ATTR_NONSTRING()
|
||||
# elif RBIMPL_COMPILER_SINCE(Clang, 21, 0, 0)
|
||||
# define RBIMPL_ATTR_NONSTRING_ARRAY() RBIMPL_ATTR_NONSTRING()
|
||||
# else
|
||||
# define RBIMPL_ATTR_NONSTRING_ARRAY() /* void */
|
||||
# endif
|
||||
#else
|
||||
# define RBIMPL_ATTR_NONSTRING() /* void */
|
||||
# define RBIMPL_ATTR_NONSTRING_ARRAY() /* void */
|
||||
#endif
|
||||
|
||||
#endif /* RBIMPL_ATTR_NONSTRING_H */
|
||||
|
||||
@ -104,6 +104,9 @@ RBasic {
|
||||
klass(RBIMPL_VALUE_NULL)
|
||||
{
|
||||
}
|
||||
# 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
@ -1368,7 +1368,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));
|
||||
@ -1402,7 +1402,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);
|
||||
}
|
||||
|
||||
@ -1438,7 +1438,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);
|
||||
|
||||
8
string.c
8
string.c
@ -486,14 +486,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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
@ -12084,7 +12084,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);
|
||||
}
|
||||
|
||||
@ -12101,7 +12101,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);
|
||||
}
|
||||
|
||||
|
||||
8
symbol.c
8
symbol.c
@ -736,7 +736,7 @@ ID
|
||||
rb_intern3(const char *name, long len, rb_encoding *enc)
|
||||
{
|
||||
VALUE sym;
|
||||
struct RString fake_str;
|
||||
struct RString fake_str = {RBASIC_INIT};
|
||||
VALUE str = rb_setup_fake_str(&fake_str, name, len, enc);
|
||||
OBJ_FREEZE(str);
|
||||
sym = lookup_str_sym(str);
|
||||
@ -1191,7 +1191,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);
|
||||
@ -1203,7 +1203,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);
|
||||
@ -1227,7 +1227,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);
|
||||
}
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
# define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR
|
||||
#define RUBY_VERSION_TEENY 9
|
||||
#define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR
|
||||
#define RUBY_PATCHLEVEL 177
|
||||
#define RUBY_PATCHLEVEL 178
|
||||
|
||||
#include "ruby/version.h"
|
||||
#include "ruby/internal/abi.h"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user