summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/mruby/error.h2
-rw-r--r--lib/mruby/build/command.rb4
-rw-r--r--mrbgems/mruby-io/mrblib/kernel.rb4
-rw-r--r--mrbgems/mruby-io/src/io.c17
-rw-r--r--mrbgems/mruby-string-ext/src/string.c4
-rw-r--r--src/class.c5
-rw-r--r--src/object.c2
-rw-r--r--src/string.c9
-rw-r--r--src/variable.c2
9 files changed, 25 insertions, 24 deletions
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
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
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
diff --git a/mrbgems/mruby-io/src/io.c b/mrbgems/mruby-io/src/io.c
index 624c27f47..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 */
@@ -907,11 +908,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;
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 b1c7513de..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, "#<Module:") :
mrb_str_new_lit(mrb, "#<Class:");
- mrb_str_concat(mrb, path, mrb_ptr_to_str(mrb, c));
+ mrb_str_cat_str(mrb, path, mrb_ptr_to_str(mrb, c));
mrb_str_cat_lit(mrb, path, ">");
}
return path;
@@ -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;
}
}
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/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;
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, ">");