From 4877dbf2a99152c41c3d9069523cfa19f21f51ac Mon Sep 17 00:00:00 2001 From: take-cheeze Date: Sat, 19 Oct 2019 01:42:34 +0900 Subject: Print mrbc command on verbose mode --- lib/mruby/build/command.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/mruby/build/command.rb b/lib/mruby/build/command.rb index bff250c93..6e41e3db2 100644 --- a/lib/mruby/build/command.rb +++ b/lib/mruby/build/command.rb @@ -327,7 +327,9 @@ module MRuby infiles.each do |f| _pp "MRBC", f.relative_path, nil, :indent => 2 end - IO.popen("#{filename @command} #{@compile_options % {:funcname => funcname}} #{filename(infiles).join(' ')}", 'r+') do |io| + cmd = "#{filename @command} #{@compile_options % {:funcname => funcname}} #{filename(infiles).join(' ')}" + print("#{cmd}\n") if $verbose + IO.popen(cmd, 'r+') do |io| out.puts io.read end # if mrbc execution fail, drop the file -- cgit v1.2.3 From 347729a7c0f46a43fa21c75ba50f73ed604b097b Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shuji Date: Sat, 19 Oct 2019 17:27:17 +0900 Subject: Fix that `Module#to_s` may return frozen string; ref 08eafe2 --- src/class.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/class.c b/src/class.c index b1c7513de..b8d3d31d8 100644 --- a/src/class.c +++ b/src/class.c @@ -1885,7 +1885,8 @@ mrb_mod_to_s(mrb_state *mrb, mrb_value klass) return mrb_str_cat_lit(mrb, str, ">"); } else { - return class_name_str(mrb, mrb_class_ptr(klass)); + mrb_value str = class_name_str(mrb, mrb_class_ptr(klass)); + return mrb_frozen_p(mrb_basic_ptr(str)) ? mrb_str_dup(mrb, str) : str; } } -- cgit v1.2.3 From 7047c52d7be0dbe8c6e35e8ca04ccf408e5a2769 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shuji Date: Sun, 20 Oct 2019 16:26:10 +0900 Subject: Use `mrb_str_cat_str` instead of `mrb_str_concat` if possible --- mrbgems/mruby-string-ext/src/string.c | 4 ++-- src/class.c | 2 +- src/object.c | 2 +- src/variable.c | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/mrbgems/mruby-string-ext/src/string.c b/mrbgems/mruby-string-ext/src/string.c index acf780005..ffad0f527 100644 --- a/mrbgems/mruby-string-ext/src/string.c +++ b/mrbgems/mruby-string-ext/src/string.c @@ -174,8 +174,8 @@ mrb_str_concat_m(mrb_state *mrb, mrb_value self) str = int_chr_binary(mrb, str); #endif else - str = mrb_ensure_string_type(mrb, str); - mrb_str_concat(mrb, self, str); + mrb_ensure_string_type(mrb, str); + mrb_str_cat_str(mrb, self, str); return self; } diff --git a/src/class.c b/src/class.c index b8d3d31d8..2656806d2 100644 --- a/src/class.c +++ b/src/class.c @@ -145,7 +145,7 @@ class_name_str(mrb_state *mrb, struct RClass* c) if (mrb_nil_p(path)) { path = c->tt == MRB_TT_MODULE ? mrb_str_new_lit(mrb, "#"); } return path; diff --git a/src/object.c b/src/object.c index 4e2ba7154..33d570331 100644 --- a/src/object.c +++ b/src/object.c @@ -423,7 +423,7 @@ mrb_any_to_s(mrb_state *mrb, mrb_value obj) mrb_str_cat_cstr(mrb, str, cname); if (!mrb_immediate_p(obj)) { mrb_str_cat_lit(mrb, str, ":"); - mrb_str_concat(mrb, str, mrb_ptr_to_str(mrb, mrb_ptr(obj))); + mrb_str_cat_str(mrb, str, mrb_ptr_to_str(mrb, mrb_ptr(obj))); } mrb_str_cat_lit(mrb, str, ">"); diff --git a/src/variable.c b/src/variable.c index dce598835..8fc01fe2d 100644 --- a/src/variable.c +++ b/src/variable.c @@ -509,7 +509,7 @@ mrb_obj_iv_inspect(mrb_state *mrb, struct RObject *obj) mrb_str_cat_lit(mrb, str, "-<"); mrb_str_cat_cstr(mrb, str, cn); mrb_str_cat_lit(mrb, str, ":"); - mrb_str_concat(mrb, str, mrb_ptr_to_str(mrb, obj)); + mrb_str_cat_str(mrb, str, mrb_ptr_to_str(mrb, obj)); iv_foreach(mrb, t, inspect_i, &str); mrb_str_cat_lit(mrb, str, ">"); -- cgit v1.2.3 From 941b99955a1da1156648e31293707884423fdcd1 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shuji Date: Mon, 21 Oct 2019 18:50:52 +0900 Subject: Remove `Kernel#getc` `Kernel#getc` has been removed since Ruby 1.9 and is not defined in ISO. --- mrbgems/mruby-io/mrblib/kernel.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/mrbgems/mruby-io/mrblib/kernel.rb b/mrbgems/mruby-io/mrblib/kernel.rb index 42d5bb1d1..9cb3b5650 100644 --- a/mrbgems/mruby-io/mrblib/kernel.rb +++ b/mrbgems/mruby-io/mrblib/kernel.rb @@ -28,8 +28,4 @@ module Kernel def gets(*args) $stdin.gets(*args) end - - def getc(*args) - $stdin.getc(*args) - end end -- cgit v1.2.3 From 41c43234a7870af32cf4bec830229df0dea1c142 Mon Sep 17 00:00:00 2001 From: KOBAYASHI Shuji Date: Tue, 22 Oct 2019 21:56:40 +0900 Subject: Fix incorrect `MRB_STR_ASCII` flag update in `mrb_str_dump` ### Example (with `MRB_UTF8_STRING`) ```ruby s = "\u3042" p s.size s.dump p s.size ``` #### Before this patch: ``` 1 3 ``` #### After this patch: ``` 1 1 ``` --- src/string.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/string.c b/src/string.c index d3774f8c4..6ab9a1ff7 100644 --- a/src/string.c +++ b/src/string.c @@ -1388,8 +1388,13 @@ str_escape(mrb_state *mrb, mrb_value str, mrb_bool inspect) } mrb_str_cat_lit(mrb, result, "\""); #ifdef MRB_UTF8_STRING - mrb_str_ptr(str)->flags |= ascii_flag; - mrb_str_ptr(result)->flags |= ascii_flag; + if (inspect) { + mrb_str_ptr(str)->flags |= ascii_flag; + mrb_str_ptr(result)->flags |= ascii_flag; + } + else { + RSTR_SET_ASCII_FLAG(mrb_str_ptr(result)); + } #endif return result; -- cgit v1.2.3 From 11184e9186f26264b7d453dce56c9a16f2f59b15 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 22 Oct 2019 22:46:58 +0900 Subject: Remove unnecessary `mrb_string_p()` check. --- mrbgems/mruby-io/src/io.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/mrbgems/mruby-io/src/io.c b/mrbgems/mruby-io/src/io.c index 624c27f47..9474011ce 100644 --- a/mrbgems/mruby-io/src/io.c +++ b/mrbgems/mruby-io/src/io.c @@ -907,11 +907,7 @@ mrb_io_syswrite(mrb_state *mrb, mrb_value io) } mrb_get_args(mrb, "S", &str); - if (!mrb_string_p(str)) { - buf = mrb_funcall(mrb, str, "to_s", 0); - } else { - buf = str; - } + buf = str; if (fptr->fd2 == -1) { fd = fptr->fd; -- cgit v1.2.3 From 9540a8309c451ab92fc105ff10868a720e5ec315 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 22 Oct 2019 22:49:12 +0900 Subject: Remove unnecessary `mrb_funcall()`. --- mrbgems/mruby-io/src/io.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mrbgems/mruby-io/src/io.c b/mrbgems/mruby-io/src/io.c index 9474011ce..3a6932b3a 100644 --- a/mrbgems/mruby-io/src/io.c +++ b/mrbgems/mruby-io/src/io.c @@ -284,12 +284,13 @@ mrb_io_alloc(mrb_state *mrb) #endif static int -option_to_fd(mrb_state *mrb, mrb_value obj, const char *key) +option_to_fd(mrb_state *mrb, mrb_value hash, const char *key) { - mrb_value opt = mrb_funcall(mrb, obj, "[]", 1, mrb_symbol_value(mrb_intern_static(mrb, key, strlen(key)))); - if (mrb_nil_p(opt)) { - return -1; - } + mrb_value opt; + + if (!mrb_hash_p(hash)) return -1; + opt = mrb_hash_fetch(mrb, hash, mrb_symbol_value(mrb_intern_static(mrb, key, strlen(key))), mrb_nil_value()); + if (mrb_nil_p(opt)) return -1; switch (mrb_type(opt)) { case MRB_TT_DATA: /* IO */ -- cgit v1.2.3 From fa85f91e0e3ebff7b2626bfcf550821445c064d7 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 23 Oct 2019 14:45:46 +0900 Subject: Add type cast to avoid an error from `int` and `enum` mixture; fix #4786 --- include/mruby/error.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/mruby/error.h b/include/mruby/error.h index 20090d197..d24b5b0c3 100644 --- a/include/mruby/error.h +++ b/include/mruby/error.h @@ -52,7 +52,7 @@ mrb_break_value_get(struct RBreak *brk) { mrb_value val; val.value = brk->value; - val.tt = brk->flags & RBREAK_VALUE_TT_MASK; + val.tt = (enum mrb_vtype)(brk->flags & RBREAK_VALUE_TT_MASK); return val; } static inline void -- cgit v1.2.3