summaryrefslogtreecommitdiffhomepage
path: root/mrbgems
diff options
context:
space:
mode:
Diffstat (limited to 'mrbgems')
-rw-r--r--mrbgems/mruby-exit/mrbgem.rake4
-rw-r--r--mrbgems/mruby-exit/src/mruby-exit.c24
-rw-r--r--mrbgems/mruby-object-ext/src/object.c6
3 files changed, 31 insertions, 3 deletions
diff --git a/mrbgems/mruby-exit/mrbgem.rake b/mrbgems/mruby-exit/mrbgem.rake
new file mode 100644
index 000000000..910b3b4f9
--- /dev/null
+++ b/mrbgems/mruby-exit/mrbgem.rake
@@ -0,0 +1,4 @@
+MRuby::Gem::Specification.new('mruby-exit') do |spec|
+ spec.license = 'MIT'
+ spec.author = 'mruby developers'
+end
diff --git a/mrbgems/mruby-exit/src/mruby-exit.c b/mrbgems/mruby-exit/src/mruby-exit.c
new file mode 100644
index 000000000..d81657592
--- /dev/null
+++ b/mrbgems/mruby-exit/src/mruby-exit.c
@@ -0,0 +1,24 @@
+#include <stdlib.h>
+#include "mruby.h"
+
+static mrb_value
+f_exit(mrb_state *mrb, mrb_value self)
+{
+ mrb_int i = EXIT_SUCCESS;
+
+ mrb_get_args(mrb, "|i", &i);
+ exit(i);
+ /* not reached */
+ return mrb_nil_value();
+}
+
+void
+mrb_mruby_exit_gem_init(mrb_state* mrb)
+{
+ mrb_define_method(mrb, mrb->kernel_module, "exit", f_exit, MRB_ARGS_REQ(1));
+}
+
+void
+mrb_mruby_exit_gem_final(mrb_state* mrb)
+{
+}
diff --git a/mrbgems/mruby-object-ext/src/object.c b/mrbgems/mruby-object-ext/src/object.c
index 598ebe91d..927a23d66 100644
--- a/mrbgems/mruby-object-ext/src/object.c
+++ b/mrbgems/mruby-object-ext/src/object.c
@@ -59,7 +59,7 @@ nil_to_i(mrb_state *mrb, mrb_value obj)
* k.instance_exec(5) {|x| @secret+x } #=> 104
*/
-mrb_value
+mrb_value
mrb_yield_internal(mrb_state *mrb, mrb_value b, int argc, mrb_value *argv, mrb_value self, struct RClass *c);
static mrb_value
@@ -69,7 +69,7 @@ mrb_obj_instance_exec(mrb_state *mrb, mrb_value self)
int argc;
mrb_value blk;
struct RClass *c;
-
+
mrb_get_args(mrb, "*&", &argv, &argc, &blk);
if (mrb_nil_p(blk)) {
@@ -80,7 +80,7 @@ mrb_obj_instance_exec(mrb_state *mrb, mrb_value self)
case MRB_TT_SYMBOL:
case MRB_TT_FIXNUM:
case MRB_TT_FLOAT:
- c = 0;
+ c = NULL;
break;
default:
c = mrb_class_ptr(mrb_singleton_class(mrb, self));