From 39d6e1f0a3f2ba2548324f7b96a2b3141048bb8d Mon Sep 17 00:00:00 2001 From: MATSUMOTO Ryosuke Date: Thu, 10 Oct 2013 01:56:31 +0900 Subject: [PATCH] Add Apache::globale_remove to remove global_variable when sharing mrb_state --- example/gv_remove/remove.rb | 5 +++++ mruby | 2 +- src/ap_mrb_core.c | 10 ++++++++++ src/ap_mrb_core.h | 1 + 4 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 example/gv_remove/remove.rb diff --git a/example/gv_remove/remove.rb b/example/gv_remove/remove.rb new file mode 100644 index 0000000..198c1ae --- /dev/null +++ b/example/gv_remove/remove.rb @@ -0,0 +1,5 @@ +# mrubyFixupsMiddle "/usr/local/apache/hooks/test.rb" +$hoge = 1 +Apache::rputs global_variables.to_s +Apache::rputs "hoge" +Apache::rputs Apache::global_remove(:$hoge).to_s diff --git a/mruby b/mruby index 9295f6a..400ccec 160000 --- a/mruby +++ b/mruby @@ -1 +1 @@ -Subproject commit 9295f6ae4916854c92cd3430cd0ee5d3b2f1b2df +Subproject commit 400ccecf0a072fed0be0945277b752ce6aace79b diff --git a/src/ap_mrb_core.c b/src/ap_mrb_core.c index f7a0b79..e446e79 100644 --- a/src/ap_mrb_core.c +++ b/src/ap_mrb_core.c @@ -256,6 +256,15 @@ mrb_value ap_mrb_server_name(mrb_state *mrb, mrb_value self) return mrb_str_new_cstr(mrb, AP_SERVER_BASEPRODUCT); } +mrb_value ap_mrb_f_global_remove(mrb_state *mrb, mrb_value self) +{ + mrb_sym id; + mrb_get_args(mrb, "n", &id); + mrb_gv_remove(mrb, id); + + return mrb_f_global_variables(mrb, self); +} + void ap_mruby_core_init(mrb_state *mrb, struct RClass *class_core) { @@ -335,4 +344,5 @@ void ap_mruby_core_init(mrb_state *mrb, struct RClass *class_core) mrb_define_class_method(mrb, class_core, "mod_mruby_version", ap_mrb_get_mod_mruby_version, ARGS_NONE()); mrb_define_class_method(mrb, class_core, "server_version", ap_mrb_get_server_version, ARGS_NONE()); mrb_define_class_method(mrb, class_core, "server_build", ap_mrb_get_server_build, ARGS_NONE()); + mrb_define_class_method(mrb, class_core, "global_remove", ap_mrb_f_global_remove, ARGS_REQ(1)); } diff --git a/src/ap_mrb_core.h b/src/ap_mrb_core.h index 5ad81bd..dec702e 100644 --- a/src/ap_mrb_core.h +++ b/src/ap_mrb_core.h @@ -12,6 +12,7 @@ #include "http_protocol.h" #include "mruby/string.h" +#include "mruby/variable.h" #define INVALID_PRIORITY -1