From b7d16aa6766ebf1bdcdbaac96e848794c3c87f89 Mon Sep 17 00:00:00 2001 From: nobu Date: Wed, 16 Jan 2008 06:26:33 +0000 Subject: * 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: http://svn.ruby-lang.org/repos/ruby/trunk@15074 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- load.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'load.c') diff --git a/load.c b/load.c index 541e6c81b..1d1058961 100644 --- a/load.c +++ b/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; -- cgit