Is it not the case that rb_Str_to_inum(str, base, badcheck) in bignum.c
leaks the memory allocated with ALLOCA_N?
I think it should always be the case that the string has a sentinel and
so if we end up running that section, there's already a bug, in which
case this may not be worth worrying about.
VALUE
rb_str_to_inum(str, base, badcheck)
VALUE str;
int base;
int badcheck;
{
char *s;
long len;
StringValue(str);
if (badcheck) {
s = StringValueCStr(str);
}
else {
s = RSTRING(str)->ptr;
}
if (s) {
len = RSTRING(str)->len;
if (s[len]) { /* no sentinel somehow */
char *p = ALLOCA_N(char, len+1); /* THIS BIT HERE */
MEMCPY(p, s, char, len);
p[len] = '\0';
s = p;
}
}
return rb_cstr_to_inum(s, base, badcheck);
}