aboutsummaryrefslogtreecommitdiffstats
path: root/encoding.c
diff options
context:
space:
mode:
authorYusuke Endoh <mame@ruby-lang.org>2019-07-15 12:00:12 +0900
committerYusuke Endoh <mame@ruby-lang.org>2019-07-15 12:01:22 +0900
commit76bad330aae4ee867585dda3e547e5db740fc0f3 (patch)
treec690476c192e51b23cd5cfafbc7549309252b233 /encoding.c
parentc23e5976744f1984b309f0af724fbd8ddea2c56a (diff)
downloadruby-76bad330aae4ee867585dda3e547e5db740fc0f3.tar.gz
encoding.c (enc_table_expand): prefer xrealloc to realloc
And raise an exception when failed to register an encoding
Diffstat (limited to 'encoding.c')
-rw-r--r--encoding.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/encoding.c b/encoding.c
index f4606eeb14..ff5e488930 100644
--- a/encoding.c
+++ b/encoding.c
@@ -268,8 +268,7 @@ enc_table_expand(int newsize)
if (enc_table.size >= newsize) return newsize;
newsize = (newsize + 7) / 8 * 8;
- ent = realloc(enc_table.list, sizeof(*enc_table.list) * newsize);
- if (!ent) return -1;
+ ent = xrealloc(enc_table.list, sizeof(*enc_table.list) * newsize);
memset(ent + enc_table.size, 0, sizeof(*ent)*(newsize - enc_table.size));
enc_table.list = ent;
enc_table.size = newsize;
@@ -443,6 +442,9 @@ enc_replicate_with_index(const char *name, rb_encoding *origenc, int idx)
set_base_encoding(idx, origenc);
set_encoding_const(name, rb_enc_from_index(idx));
}
+ else {
+ rb_raise(rb_eArgError, "failed to replicate encoding");
+ }
return idx;
}