From 7e8a9af9db42a21f6a1125a29e98c45ff9d5833b Mon Sep 17 00:00:00 2001 From: Jean Boussier Date: Fri, 19 Mar 2021 11:29:06 +0100 Subject: rb_enc_interned_str: handle autoloaded encodings If called with an autoloaded encoding that was not yet initialized, `rb_enc_interned_str` would crash with a NULL pointer exception. See: https://github.com/ruby/ruby/pull/4119#issuecomment-800189841 --- internal/encoding.h | 3 +++ 1 file changed, 3 insertions(+) (limited to 'internal') diff --git a/internal/encoding.h b/internal/encoding.h index af236daeaf..c0cf061bd4 100644 --- a/internal/encoding.h +++ b/internal/encoding.h @@ -12,12 +12,15 @@ #include "ruby/ruby.h" /* for ID */ #include "ruby/encoding.h" /* for rb_encoding */ +#define rb_enc_autoload_p(enc) (!rb_enc_mbmaxlen(enc)) + /* encoding.c */ ID rb_id_encoding(void); rb_encoding *rb_enc_get_from_index(int index); rb_encoding *rb_enc_check_str(VALUE str1, VALUE str2); int rb_encdb_replicate(const char *alias, const char *orig); int rb_encdb_alias(const char *alias, const char *orig); +int rb_enc_autoload(rb_encoding *enc); int rb_encdb_dummy(const char *name); void rb_encdb_declare(const char *name); void rb_enc_set_base(const char *name, const char *orig); -- cgit v1.2.3