From 1a64f842ef69e359c529d08ad553a3d411e22f59 Mon Sep 17 00:00:00 2001 From: k0kubun Date: Tue, 6 Feb 2018 15:19:10 +0000 Subject: [PATCH] mjit.c: handle fopen error [Bug #14441] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62258 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- mjit.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mjit.c b/mjit.c index 0bb50aecd9..3bf82f7529 100644 --- a/mjit.c +++ b/mjit.c @@ -91,6 +91,7 @@ #include #include #endif +#include extern void rb_native_mutex_lock(rb_nativethread_lock_t *lock); extern void rb_native_mutex_unlock(rb_nativethread_lock_t *lock); @@ -698,6 +699,11 @@ convert_unit_to_func(struct rb_mjit_unit *unit) sprintf(funcname, "_mjit%d", unit->id); f = fopen(c_file, "w"); + if (f == NULL) { + verbose(1, "Failed to fopen '%s', giving up JIT for it (%s)", c_file, strerror(errno)); + return (mjit_func_t)NOT_COMPILABLE_JIT_ISEQ_FUNC; + } + /* -include-pch is used for Clang */ if (mjit_opts.cc == MJIT_CC_GCC) { const char *s = pch_file;