mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* load.c (rb_feature_p): get rid of unlimited alloca.
* object.c (rb_cstr_to_dbl): ditto. * io.c (mode_enc): fixed uninitialized variable. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15074 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
2402ecabb0
commit
db26a9b105
4 changed files with 29 additions and 10 deletions
6
load.c
6
load.c
|
|
@ -166,18 +166,22 @@ rb_feature_p(const char *feature, const char *ext, int rb, int expanded, const c
|
|||
return !IS_RBEXT(ext) ? 's' : 'r';
|
||||
}
|
||||
else {
|
||||
VALUE bufstr;
|
||||
char *buf;
|
||||
|
||||
if (ext && *ext) return 0;
|
||||
buf = ALLOCA_N(char, len + DLEXT_MAXLEN + 1);
|
||||
bufstr = rb_str_tmp_new(len + DLEXT_MAXLEN);
|
||||
buf = RSTRING_PTR(bufstr);
|
||||
MEMCPY(buf, feature, char, len);
|
||||
for (i = 0; (e = loadable_ext[i]) != 0; i++) {
|
||||
strncpy(buf + len, e, DLEXT_MAXLEN + 1);
|
||||
if (st_get_key(loading_tbl, (st_data_t)buf, &data)) {
|
||||
rb_str_resize(bufstr, 0);
|
||||
if (fn) *fn = (const char*)data;
|
||||
return i ? 's' : 'r';
|
||||
}
|
||||
}
|
||||
rb_str_resize(bufstr, 0);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue