summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-08-24 23:32:35 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-08-26 02:01:50 +0900
commit0e10a23d7a613026596cc2321ab530736f399aff (patch)
treee703154f14f4a59cc3ce4a98af52490157e4485c /src
parent0c52112dd41a040a77bbb4dec339ac73da4992b7 (diff)
downloadmruby-0e10a23d7a613026596cc2321ab530736f399aff.tar.gz
mruby-0e10a23d7a613026596cc2321ab530736f399aff.zip
Add checks if `iv_tbl` is NULL.
Diffstat (limited to 'src')
-rw-r--r--src/variable.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/variable.c b/src/variable.c
index b63c15d61..d5d37bb87 100644
--- a/src/variable.c
+++ b/src/variable.c
@@ -99,10 +99,11 @@ iv_get(mrb_state *mrb, iv_tbl *t, mrb_sym sym, mrb_value *vp)
static mrb_bool
iv_del(mrb_state *mrb, iv_tbl *t, mrb_sym sym, mrb_value *vp)
{
- khash_t(iv) *h = &t->h;
- khiter_t k;
+ if (t == NULL) return FALSE;
+ else {
+ khash_t(iv) *h = &t->h;
+ khiter_t k;
- if (h) {
k = kh_get(iv, mrb, h, sym);
if (k != kh_end(h)) {
mrb_value val = kh_value(h, k);
@@ -117,11 +118,14 @@ iv_del(mrb_state *mrb, iv_tbl *t, mrb_sym sym, mrb_value *vp)
static mrb_bool
iv_foreach(mrb_state *mrb, iv_tbl *t, iv_foreach_func *func, void *p)
{
- khash_t(iv) *h = &t->h;
- khiter_t k;
- int n;
+ if (t == NULL) {
+ return TRUE;
+ }
+ else {
+ khash_t(iv) *h = &t->h;
+ khiter_t k;
+ int n;
- if (h) {
for (k = kh_begin(h); k != kh_end(h); k++) {
if (kh_exist(h, k)) {
n = (*func)(mrb, kh_key(h, k), kh_value(h, k), p);
@@ -138,10 +142,8 @@ iv_foreach(mrb_state *mrb, iv_tbl *t, iv_foreach_func *func, void *p)
static size_t
iv_size(mrb_state *mrb, iv_tbl *t)
{
- khash_t(iv) *h;
-
- if (t && (h = &t->h)) {
- return kh_size(h);
+ if (t) {
+ return kh_size(&t->h);
}
return 0;
}