summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorJean Boussier <jean.boussier@gmail.com>2021-03-19 11:29:06 +0100
committerNobuyoshi Nakada <nobu@ruby-lang.org>2021-03-22 21:37:48 +0900
commit7e8a9af9db42a21f6a1125a29e98c45ff9d5833b (patch)
tree67c6fe4c12f8d4fdc8365a33ebee6bc37750c157 /internal
parent5b272a645322c2ffe0f73c523d64832678d0de5f (diff)
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
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/4290
Diffstat (limited to 'internal')
-rw-r--r--internal/encoding.h3
1 files changed, 3 insertions, 0 deletions
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);