summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authortake_cheeze <[email protected]>2014-07-09 22:02:33 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-07-12 20:36:44 +0900
commitd1eea450bf54b48bdd388794532f0437e352659c (patch)
treeadcb141ba8400a4e016aa8a56a9f6eaf681e9be8
parent42110dcee1733c39129dbbbfe619943a9da158a8 (diff)
downloadmruby-d1eea450bf54b48bdd388794532f0437e352659c.tar.gz
mruby-d1eea450bf54b48bdd388794532f0437e352659c.zip
Use `mrb_parse_nstring` instead in eval.
-rw-r--r--mrbgems/mruby-eval/src/eval.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/mrbgems/mruby-eval/src/eval.c b/mrbgems/mruby-eval/src/eval.c
index b5cb833c2..3036837d5 100644
--- a/mrbgems/mruby-eval/src/eval.c
+++ b/mrbgems/mruby-eval/src/eval.c
@@ -113,10 +113,12 @@ create_proc_from_string(mrb_state *mrb, char *s, int len, mrb_value binding, cha
mrbc_filename(mrb, cxt, file);
}
- p = mrb_parser_new(mrb);
- p->s = s;
- p->send = s + len;
- mrb_parser_parse(p, cxt);
+ p = mrb_parse_nstring(mrb, s, len, cxt);
+
+ /* only occur when memory ran out */
+ if (!p) {
+ mrb_raise(mrb, E_RUNTIME_ERROR, "Failed to create parser state.");
+ }
if (0 < p->nerr) {
/* parse error */