summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-02-08 09:19:27 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-02-08 09:19:27 +0000
commited520cf6e96dcae2b7900127e325fcea1f4abc26 (patch)
tree89c098f2e02099588c8b4f74fbb8e37c15045d49 /eval.c
parentb576f57aa02c4983eeb081f625c45b9445c50538 (diff)
* parse.y (parse_quotedwords): %w should allow parenthesis escape.
* parse.y (parse_qstring): %q should allow terminator escape. * re.c (rb_reg_options): new method to give an option values. * parse.y (cond0): disable special treating of integer literal in conditional unless option -e is supplied. changes current behavior. experimental. * parse.y (cond0): give warning for string/integer literals and dot operators in conditionals unless option -e is supplied. * re.c (rb_reg_equal): all option flags should be same to be equal. * error.c (Init_Exception): make Interrupt a subclass of SignalException. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1167 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/eval.c b/eval.c
index 26ed7e39ce..3bd0a6bb09 100644
--- a/eval.c
+++ b/eval.c
@@ -4473,7 +4473,7 @@ rb_call(klass, recv, mid, argc, argv, scope)
struct cache_entry *ent;
if (!klass) {
- rb_raise(rb_eNotImpError, "method call on terminated obejct");
+ rb_raise(rb_eNotImpError, "method call on terminated object");
}
/* is it in the method cache? */
ent = cache + EXPR1(klass, mid);
@@ -5998,9 +5998,10 @@ blk_copy_prev(block)
while (block->prev) {
tmp = ALLOC_N(struct BLOCK, 1);
MEMCPY(tmp, block->prev, struct BLOCK, 1);
- if (tmp->frame.argc > 0) {
+ if (tmp->frame.argc > 0 && !(tmp->frame.flags & FRAME_MALLOC)) {
tmp->frame.argv = ALLOC_N(VALUE, tmp->frame.argc);
MEMCPY(tmp->frame.argv, block->prev->frame.argv, VALUE, tmp->frame.argc);
+ tmp->frame.flags |= FRAME_MALLOC;
}
scope_dup(tmp->scope);
tmp->tag->flags |= BLOCK_DYNAMIC;
@@ -6017,7 +6018,7 @@ frame_dup(frame)
struct FRAME *tmp;
for (;;) {
- if (frame->argc > 0) {
+ if (frame->argc > 0 && !(frame->flags & FRAME_MALLOC)) {
argv = ALLOC_N(VALUE, frame->argc);
MEMCPY(argv, frame->argv, VALUE, frame->argc);
frame->argv = argv;