fix(lib): some bug fixes in kazari section

This commit is contained in:
Masahiko AMANO 2023-01-21 17:48:18 +03:00
parent 9de309e142
commit 45ce484636

View File

@ -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) { tanabata->shoppyou.size == -1 && tanabata->shoppyou.hole_cnt == 0) {
return 1; return 1;
} }
Kazari *current_kazari = tanabata->shoppyou.database + tanabata->shoppyou.size - 1; if (tanabata->shoppyou.size - tanabata->shoppyou.hole_cnt > 0) {
for (; current_kazari >= tanabata->shoppyou.database; current_kazari--) { Kazari *current_kazari = tanabata->shoppyou.database + tanabata->shoppyou.size - 1;
if (current_kazari->sasa_id == sasa_id && current_kazari->tanzaku_id == tanzaku_id) { for (; current_kazari >= tanabata->shoppyou.database; current_kazari--) {
return 1; if (current_kazari->sasa_id == sasa_id && current_kazari->tanzaku_id == tanzaku_id) {
return 1;
}
} }
} }
return kazari_add(&tanabata->shoppyou, sasa_id, tanzaku_id); 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) { 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; return NULL;
} }
Tanzaku *tanzaku_list = 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) { 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; return NULL;
} }
Sasa *sasa_list = NULL; Sasa *sasa_list = NULL;