encoding.c (enc_table_expand): prefer xrealloc to realloc
And raise an exception when failed to register an encoding
This commit is contained in:
parent
c23e597674
commit
76bad330aa
@ -268,8 +268,7 @@ enc_table_expand(int newsize)
|
|||||||
|
|
||||||
if (enc_table.size >= newsize) return newsize;
|
if (enc_table.size >= newsize) return newsize;
|
||||||
newsize = (newsize + 7) / 8 * 8;
|
newsize = (newsize + 7) / 8 * 8;
|
||||||
ent = realloc(enc_table.list, sizeof(*enc_table.list) * newsize);
|
ent = xrealloc(enc_table.list, sizeof(*enc_table.list) * newsize);
|
||||||
if (!ent) return -1;
|
|
||||||
memset(ent + enc_table.size, 0, sizeof(*ent)*(newsize - enc_table.size));
|
memset(ent + enc_table.size, 0, sizeof(*ent)*(newsize - enc_table.size));
|
||||||
enc_table.list = ent;
|
enc_table.list = ent;
|
||||||
enc_table.size = newsize;
|
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_base_encoding(idx, origenc);
|
||||||
set_encoding_const(name, rb_enc_from_index(idx));
|
set_encoding_const(name, rb_enc_from_index(idx));
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
rb_raise(rb_eArgError, "failed to replicate encoding");
|
||||||
|
}
|
||||||
return idx;
|
return idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user