From 45ce484636f9d3088d2f0c79045bb679554bebc6 Mon Sep 17 00:00:00 2001 From: Masahiko AMANO Date: Sat, 21 Jan 2023 17:48:18 +0300 Subject: [PATCH] fix(lib): some bug fixes in kazari section --- tanabata/lib/kazari.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tanabata/lib/kazari.c b/tanabata/lib/kazari.c index 7e268e4..c5ac07d 100644 --- a/tanabata/lib/kazari.c +++ b/tanabata/lib/kazari.c @@ -8,10 +8,12 @@ int tanabata_kazari_add(Tanabata *tanabata, uint64_t sasa_id, uint64_t tanzaku_i tanabata->shoppyou.size == -1 && tanabata->shoppyou.hole_cnt == 0) { return 1; } - Kazari *current_kazari = tanabata->shoppyou.database + tanabata->shoppyou.size - 1; - for (; current_kazari >= tanabata->shoppyou.database; current_kazari--) { - if (current_kazari->sasa_id == sasa_id && current_kazari->tanzaku_id == tanzaku_id) { - return 1; + if (tanabata->shoppyou.size - tanabata->shoppyou.hole_cnt > 0) { + Kazari *current_kazari = tanabata->shoppyou.database + tanabata->shoppyou.size - 1; + for (; current_kazari >= tanabata->shoppyou.database; current_kazari--) { + if (current_kazari->sasa_id == sasa_id && current_kazari->tanzaku_id == tanzaku_id) { + return 1; + } } } return kazari_add(&tanabata->shoppyou, sasa_id, tanzaku_id); @@ -22,7 +24,8 @@ int tanabata_kazari_rem(Tanabata *tanabata, uint64_t sasa_id, uint64_t tanzaku_i } Tanzaku *tanabata_tanzaku_get_by_sasa(Tanabata *tanabata, uint64_t sasa_id) { - if (sasa_id == HOLE_ID || sasa_id >= tanabata->sasahyou.size) { + if (sasa_id == HOLE_ID || sasa_id >= tanabata->sasahyou.size || + tanabata->shoppyou.size - tanabata->shoppyou.hole_cnt == 0) { return NULL; } Tanzaku *tanzaku_list = NULL; @@ -43,7 +46,8 @@ Tanzaku *tanabata_tanzaku_get_by_sasa(Tanabata *tanabata, uint64_t sasa_id) { } Sasa *tanabata_sasa_get_by_tanzaku(Tanabata *tanabata, uint64_t tanzaku_id) { - if (tanzaku_id == HOLE_ID || tanzaku_id >= tanabata->sappyou.size) { + if (tanzaku_id == HOLE_ID || tanzaku_id >= tanabata->sappyou.size || + tanabata->shoppyou.size - tanabata->shoppyou.hole_cnt == 0) { return NULL; } Sasa *sasa_list = NULL;