summaryrefslogtreecommitdiffhomepage
path: root/src/variable.c
diff options
context:
space:
mode:
authordearblue <[email protected]>2019-04-14 17:42:35 +0900
committerdearblue <[email protected]>2019-04-14 17:42:35 +0900
commitd8527d17ea504aebcdbd3970127899e0216d46dc (patch)
tree54856dcd8dd0cc2609f395f36e7486395e58e456 /src/variable.c
parentd557f977324bc55ae99205608099a788038712d6 (diff)
downloadmruby-d8527d17ea504aebcdbd3970127899e0216d46dc.tar.gz
mruby-d8527d17ea504aebcdbd3970127899e0216d46dc.zip
Fix wrong size of instance variable if occur out of memory
Diffstat (limited to 'src/variable.c')
-rw-r--r--src/variable.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/variable.c b/src/variable.c
index 6899d7475..983fe52f7 100644
--- a/src/variable.c
+++ b/src/variable.c
@@ -79,10 +79,10 @@ iv_put(mrb_state *mrb, iv_tbl *t, mrb_sym sym, mrb_value val)
}
/* Not found */
- t->size++;
if (matched_seg) {
matched_seg->key[matched_idx] = sym;
matched_seg->val[matched_idx] = val;
+ t->size++;
return;
}
@@ -91,6 +91,7 @@ iv_put(mrb_state *mrb, iv_tbl *t, mrb_sym sym, mrb_value val)
seg->key[0] = sym;
seg->val[0] = val;
t->last_len = 1;
+ t->size++;
if (prev) {
prev->next = seg;
}