summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rwxr-xr-xmrbgems/mruby-bin-debugger/tools/mrdb/apilist.c5
-rwxr-xr-xmrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c6
-rwxr-xr-xmrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c2
-rwxr-xr-xmrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c4
-rwxr-xr-xmrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c2
-rw-r--r--mrbgems/mruby-string-ext/mrblib/string.rb7
-rw-r--r--src/codegen.c48
-rw-r--r--src/load.c2
-rw-r--r--src/parse.y4
9 files changed, 47 insertions, 33 deletions
diff --git a/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.c b/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.c
index cddcab270..8234e05dc 100755
--- a/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.c
+++ b/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.c
@@ -105,7 +105,8 @@ source_file_new(mrb_state *mrb, mrb_debug_context *dbg, char *filename)
static mrb_bool
remove_newlines(char *s, FILE *fp)
{
- char c, *p;
+ int c;
+ char *p;
size_t len;
if ((len = strlen(s)) == 0) {
@@ -120,7 +121,7 @@ remove_newlines(char *s, FILE *fp)
if (*p == '\r') {
/* peek the next character and skip '\n' */
- if ((unsigned char)(c = fgetc(fp)) != '\n') {
+ if ((c = fgetc(fp)) != '\n') {
ungetc(c, fp);
}
}
diff --git a/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c b/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c
index 23b321f7c..2c93eb4ee 100755
--- a/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c
+++ b/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c
@@ -33,7 +33,7 @@ mrdb_check_syntax(mrb_state *mrb, mrb_debug_context *dbg, const char *expr, size
mrb_value
mrb_debug_eval(mrb_state *mrb, mrb_debug_context *dbg, const char *expr, size_t len, mrb_bool *exc)
{
- void *tmp;
+ void (*tmp)(struct mrb_state *, struct mrb_irep *, mrb_code *, mrb_value *);
mrb_value ruby_code;
mrb_value s;
mrb_value v;
@@ -56,9 +56,9 @@ mrb_debug_eval(mrb_state *mrb, mrb_debug_context *dbg, const char *expr, size_t
* e
* end
*/
- ruby_code = mrb_str_new_cstr(mrb, "begin\n");
+ ruby_code = mrb_str_new_lit(mrb, "begin\n");
ruby_code = mrb_str_cat(mrb, ruby_code, expr, len);
- ruby_code = mrb_str_cat_cstr(mrb, ruby_code, "\nrescue => e\ne\nend");
+ ruby_code = mrb_str_cat_lit(mrb, ruby_code, "\nrescue => e\ne\nend");
recv = dbg->regs[0];
diff --git a/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c b/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c
index b8d62ac07..74e10ab5a 100755
--- a/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c
+++ b/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c
@@ -411,11 +411,11 @@ dbgcmd_list(mrb_state *mrb, mrdb_state *mrdb)
filename = st->filename;
}
mrb_debug_list(mrb, mrdb->dbg, filename, st->line_min, st->line_max);
- listcmd_parser_state_free(mrb, st);
if (filename != NULL && filename != st->filename) {
mrb_free(mrb, filename);
}
+ listcmd_parser_state_free(mrb, st);
}
return DBGST_PROMPT;
diff --git a/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c b/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c
index 16b811edb..a617aff13 100755
--- a/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c
+++ b/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c
@@ -32,14 +32,14 @@ dbgcmd_print(mrb_state *mrb, mrdb_state *mrdb)
/* eval expr */
expr = mrb_str_new_cstr(mrb, NULL);
for (wcnt=1; wcnt<mrdb->wcnt; wcnt++) {
- expr = mrb_str_cat_cstr(mrb, expr, " ");
+ expr = mrb_str_cat_lit(mrb, expr, " ");
expr = mrb_str_cat_cstr(mrb, expr, mrdb->words[wcnt]);
}
result = mrb_debug_eval(mrb, mrdb->dbg, RSTRING_PTR(expr), RSTRING_LEN(expr), NULL);
/* $print_no = result */
- s = mrb_str_cat_cstr(mrb, result, "\0");
+ s = mrb_str_cat_lit(mrb, result, "\0");
printf("$%lu = %s\n", (unsigned long)mrdb->print_no++, RSTRING_PTR(s));
if (mrdb->print_no == 0) {
diff --git a/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c b/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c
index 7a0c37b2c..a0969a3ac 100755
--- a/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c
+++ b/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c
@@ -503,7 +503,7 @@ get_and_parse_command(mrb_state *mrb, mrdb_state *mrdb)
return cmd;
}
-static const int32_t
+static int32_t
check_method_breakpoint(mrb_state *mrb, mrb_irep *irep, mrb_code *pc, mrb_value *regs)
{
struct RClass* c;
diff --git a/mrbgems/mruby-string-ext/mrblib/string.rb b/mrbgems/mruby-string-ext/mrblib/string.rb
index b8cb93199..34744cc38 100644
--- a/mrbgems/mruby-string-ext/mrblib/string.rb
+++ b/mrbgems/mruby-string-ext/mrblib/string.rb
@@ -181,6 +181,7 @@ class String
ed = arg1.end
beg += self.size if beg < 0
ed += self.size if ed < 0
+ ed -= 1 if arg1.exclude_end?
validated = true
elsif arg1.kind_of?(String)
validated = true
@@ -198,18 +199,18 @@ class String
unless str == nil || str == ""
if arg1 != nil && arg2 !=nil
idx = arg1 >= 0 ? arg1 : self.size+arg1
- str2 = self[0...idx] + self[idx+arg2..-1]
+ str2 = self[0...idx] + self[idx+arg2..-1].to_s
else
if arg1.kind_of?(Range)
idx = beg >= 0 ? beg : self.size+beg
idx2 = ed>= 0 ? ed : self.size+ed
- str2 = self[0...idx] + self[idx2+1..-1]
+ str2 = self[0...idx] + self[idx2+1..-1].to_s
elsif arg1.kind_of?(String)
idx = self.index(arg1)
str2 = self[0...idx] + self[idx+arg1.size..-1] unless idx == nil
else
idx = arg1 >= 0 ? arg1 : self.size+arg1
- str2 = self[0...idx] + self[idx+1..-1]
+ str2 = self[0...idx] + self[idx+1..-1].to_s
end
end
self.replace(str2) unless str2 == nil
diff --git a/src/codegen.c b/src/codegen.c
index ebab9e11e..65d276b02 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -953,6 +953,18 @@ gen_assignment(codegen_scope *s, node *tree, int sp, int val)
}
break;
+ case NODE_MASGN:
+ gen_vmassignment(s, tree->car, sp, val);
+ break;
+
+ push();
+ gen_call(s, tree, attrsym(s, sym(tree->cdr->car)), sp, NOVAL);
+ pop();
+ if (val) {
+ genop_peep(s, MKOP_AB(OP_MOVE, cursp(), sp), val);
+ }
+ break;
+
default:
#ifdef ENABLE_STDIO
printf("unknown lhs %d\n", type);
@@ -1006,7 +1018,7 @@ gen_vmassignment(codegen_scope *s, node *tree, int rhs, int val)
}
}
}
- else {
+ else if (val) {
pop();
}
}
@@ -2746,7 +2758,7 @@ codedump(mrb_state *mrb, mrb_irep *irep)
printf("OP_NOP\n");
break;
case OP_MOVE:
- printf("OP_MOVE\tR%d\tR%d", GETARG_A(c), GETARG_B(c));
+ printf("OP_MOVE\tR%d\tR%d\t", GETARG_A(c), GETARG_B(c));
print_lv(mrb, irep, c, RAB);
break;
case OP_LOADL:
@@ -2758,7 +2770,7 @@ codedump(mrb_state *mrb, mrb_irep *irep)
print_lv(mrb, irep, c, RA);
break;
case OP_LOADI:
- printf("OP_LOADI\tR%d\t%d", GETARG_A(c), GETARG_sBx(c));
+ printf("OP_LOADI\tR%d\t%d\t", GETARG_A(c), GETARG_sBx(c));
print_lv(mrb, irep, c, RA);
break;
case OP_LOADSYM:
@@ -2767,19 +2779,19 @@ codedump(mrb_state *mrb, mrb_irep *irep)
print_lv(mrb, irep, c, RA);
break;
case OP_LOADNIL:
- printf("OP_LOADNIL\tR%d\t", GETARG_A(c));
+ printf("OP_LOADNIL\tR%d\t\t", GETARG_A(c));
print_lv(mrb, irep, c, RA);
break;
case OP_LOADSELF:
- printf("OP_LOADSELF\tR%d\t", GETARG_A(c));
+ printf("OP_LOADSELF\tR%d\t\t", GETARG_A(c));
print_lv(mrb, irep, c, RA);
break;
case OP_LOADT:
- printf("OP_LOADT\tR%d\t", GETARG_A(c));
+ printf("OP_LOADT\tR%d\t\t", GETARG_A(c));
print_lv(mrb, irep, c, RA);
break;
case OP_LOADF:
- printf("OP_LOADF\tR%d\t", GETARG_A(c));
+ printf("OP_LOADF\tR%d\t\t", GETARG_A(c));
print_lv(mrb, irep, c, RA);
break;
case OP_GETGLOBAL:
@@ -2788,7 +2800,7 @@ codedump(mrb_state *mrb, mrb_irep *irep)
print_lv(mrb, irep, c, RA);
break;
case OP_SETGLOBAL:
- printf("OP_SETGLOBAL\t:%s\tR%d",
+ printf("OP_SETGLOBAL\t:%s\tR%d\t",
mrb_sym2name(mrb, irep->syms[GETARG_Bx(c)]),
GETARG_A(c));
print_lv(mrb, irep, c, RA);
@@ -2799,7 +2811,7 @@ codedump(mrb_state *mrb, mrb_irep *irep)
print_lv(mrb, irep, c, RA);
break;
case OP_SETCONST:
- printf("OP_SETCONST\t:%s\tR%d",
+ printf("OP_SETCONST\t:%s\tR%d\t",
mrb_sym2name(mrb, irep->syms[GETARG_Bx(c)]),
GETARG_A(c));
print_lv(mrb, irep, c, RA);
@@ -2996,11 +3008,11 @@ codedump(mrb_state *mrb, mrb_irep *irep)
print_lv(mrb, irep, c, RAB);
break;
case OP_ARYCAT:
- printf("OP_ARYCAT\tR%d\tR%d", GETARG_A(c), GETARG_B(c));
+ printf("OP_ARYCAT\tR%d\tR%d\t", GETARG_A(c), GETARG_B(c));
print_lv(mrb, irep, c, RAB);
break;
case OP_ARYPUSH:
- printf("OP_ARYPUSH\tR%d\tR%d", GETARG_A(c), GETARG_B(c));
+ printf("OP_ARYPUSH\tR%d\tR%d\t", GETARG_A(c), GETARG_B(c));
print_lv(mrb, irep, c, RAB);
break;
case OP_AREF:
@@ -3020,7 +3032,7 @@ codedump(mrb_state *mrb, mrb_irep *irep)
print_lv(mrb, irep, c, RA);
break;
case OP_STRCAT:
- printf("OP_STRCAT\tR%d\tR%d", GETARG_A(c), GETARG_B(c));
+ printf("OP_STRCAT\tR%d\tR%d\t", GETARG_A(c), GETARG_B(c));
print_lv(mrb, irep, c, RAB);
break;
case OP_HASH:
@@ -3029,7 +3041,7 @@ codedump(mrb_state *mrb, mrb_irep *irep)
break;
case OP_OCLASS:
- printf("OP_OCLASS\tR%d", GETARG_A(c));
+ printf("OP_OCLASS\tR%d\t\t", GETARG_A(c));
print_lv(mrb, irep, c, RA);
break;
case OP_CLASS:
@@ -3047,11 +3059,11 @@ codedump(mrb_state *mrb, mrb_irep *irep)
print_lv(mrb, irep, c, RA);
break;
case OP_SCLASS:
- printf("OP_SCLASS\tR%d\tR%d", GETARG_A(c), GETARG_B(c));
+ printf("OP_SCLASS\tR%d\tR%d\t", GETARG_A(c), GETARG_B(c));
print_lv(mrb, irep, c, RAB);
break;
case OP_TCLASS:
- printf("OP_TCLASS\tR%d", GETARG_A(c));
+ printf("OP_TCLASS\tR%d\t\t", GETARG_A(c));
print_lv(mrb, irep, c, RA);
break;
case OP_ERR:
@@ -3068,15 +3080,15 @@ codedump(mrb_state *mrb, mrb_irep *irep)
printf("OP_ONERR\t%03d\n", i+GETARG_sBx(c));
break;
case OP_RESCUE:
- printf("OP_RESCUE\tR%d", GETARG_A(c));
+ printf("OP_RESCUE\tR%d\t\t", GETARG_A(c));
print_lv(mrb, irep, c, RA);
break;
case OP_RAISE:
- printf("OP_RAISE\tR%d", GETARG_A(c));
+ printf("OP_RAISE\tR%d\t\t", GETARG_A(c));
print_lv(mrb, irep, c, RA);
break;
case OP_POPERR:
- printf("OP_POPERR\t%d", GETARG_A(c));
+ printf("OP_POPERR\t%d\t\t", GETARG_A(c));
print_lv(mrb, irep, c, RA);
break;
case OP_EPOP:
diff --git a/src/load.c b/src/load.c
index 62f6b9433..7640d8fda 100644
--- a/src/load.c
+++ b/src/load.c
@@ -19,7 +19,7 @@
#define FLAG_SRC_MALLOC 1
#define FLAG_SRC_STATIC 0
-#if !defined(_WIN32) && SIZE_MAX < UINT32_MAX
+#if SIZE_MAX < UINT32_MAX
# define SIZE_ERROR_MUL(x, y) ((x) > SIZE_MAX / (y))
# define SIZE_ERROR(x) ((x) > SIZE_MAX)
#else
diff --git a/src/parse.y b/src/parse.y
index b98a2c2e2..f8e1ff9aa 100644
--- a/src/parse.y
+++ b/src/parse.y
@@ -1468,7 +1468,7 @@ mlhs : mlhs_basic
mlhs_inner : mlhs_basic
| tLPAREN mlhs_inner rparen
{
- $$ = list1($2);
+ $$ = $2;
}
;
@@ -1517,7 +1517,7 @@ mlhs_basic : mlhs_list
mlhs_item : mlhs_node
| tLPAREN mlhs_inner rparen
{
- $$ = $2;
+ $$ = new_masgn(p, $2, NULL);
}
;