summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-eval/src/eval.c
diff options
context:
space:
mode:
Diffstat (limited to 'mrbgems/mruby-eval/src/eval.c')
-rw-r--r--mrbgems/mruby-eval/src/eval.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/mrbgems/mruby-eval/src/eval.c b/mrbgems/mruby-eval/src/eval.c
index b10e0c7ce..a3c421f45 100644
--- a/mrbgems/mruby-eval/src/eval.c
+++ b/mrbgems/mruby-eval/src/eval.c
@@ -52,10 +52,19 @@ create_proc_from_string(mrb_state *mrb, const char *s, mrb_int len, mrb_value bi
e = NULL;
}
+ if (file) {
+ if (strlen(file) >= UINT16_MAX) {
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "filename too long");
+ }
+ }
+ else {
+ file = "(eval)";
+ }
+
cxt = mrbc_context_new(mrb);
cxt->lineno = (uint16_t)line;
- mrbc_filename(mrb, cxt, file ? file : "(eval)");
+ mrbc_filename(mrb, cxt, file);
cxt->capture_errors = TRUE;
cxt->no_optimize = TRUE;
cxt->upper = scope && MRB_PROC_CFUNC_P(scope) ? NULL : scope;