diff --git a/src/tanabata/kazari.c b/src/tanabata/kazari.c index 3a601d4..5a051ad 100644 --- a/src/tanabata/kazari.c +++ b/src/tanabata/kazari.c @@ -31,7 +31,7 @@ Tanzaku *tanabata_tanzaku_get_by_sasa(Tanabata *tanabata, uint64_t sasa_id) { uint64_t tanzaku_count = 0; Kazari *current_kazari = tanabata->shoppyou.database; for (uint64_t i = 0; i < tanabata->shoppyou.size; i++) { - if (current_kazari->sasa_id == sasa_id) { + if (current_kazari->sasa_id == sasa_id && current_kazari->tanzaku_id != HOLE_ID) { tanzaku_count++; tanzaku_list = realloc(tanzaku_list, tanzaku_count * sizeof(Tanzaku)); tanzaku_list[tanzaku_count - 1] = tanabata_tanzaku_get_by_id(tanabata, current_kazari->tanzaku_id); @@ -53,7 +53,7 @@ Sasa *tanabata_sasa_get_by_tanzaku(Tanabata *tanabata, uint64_t tanzaku_id) { uint64_t sasa_count = 0; Kazari *current_kazari = tanabata->shoppyou.database; for (uint64_t i = 0; i < tanabata->shoppyou.size; i++) { - if (current_kazari->tanzaku_id == tanzaku_id) { + if (current_kazari->tanzaku_id == tanzaku_id && current_kazari->sasa_id != HOLE_ID) { sasa_count++; sasa_list = realloc(sasa_list, sasa_count * sizeof(Sasa)); sasa_list[sasa_count - 1] = tanabata_sasa_get_by_id(tanabata, current_kazari->sasa_id); diff --git a/src/tanabata/sasa.c b/src/tanabata/sasa.c index 6573a59..041769f 100644 --- a/src/tanabata/sasa.c +++ b/src/tanabata/sasa.c @@ -20,6 +20,16 @@ int tanabata_sasa_add(Tanabata *tanabata, const char *path) { } int tanabata_sasa_rem_by_id(Tanabata *tanabata, uint64_t sasa_id) { + if (sasa_id == HOLE_ID || sasa_id >= tanabata->sasahyou.size) { + return 1; + } + Kazari *current_kazari = tanabata->shoppyou.database; + for (uint64_t j = 0; j < tanabata->shoppyou.size; j++) { + if (current_kazari->sasa_id == sasa_id) { + current_kazari->sasa_id = HOLE_ID; + } + current_kazari++; + } return sasa_rem(&tanabata->sasahyou, sasa_id); } @@ -27,6 +37,13 @@ int tanabata_sasa_rem_by_path(Tanabata *tanabata, const char *path) { Sasa *current_sasa = tanabata->sasahyou.database; for (uint64_t i = 0; i < tanabata->sasahyou.size; i++) { if (current_sasa->id != HOLE_ID && strcmp(current_sasa->path, path) == 0) { + Kazari *current_kazari = tanabata->shoppyou.database; + for (uint64_t j = 0; j < tanabata->shoppyou.size; j++) { + if (current_kazari->sasa_id == current_sasa->id) { + current_kazari->sasa_id = HOLE_ID; + } + current_kazari++; + } return sasa_rem(&tanabata->sasahyou, current_sasa->id); } current_sasa++; diff --git a/src/tanabata/tanzaku.c b/src/tanabata/tanzaku.c index 474999d..3527dbb 100644 --- a/src/tanabata/tanzaku.c +++ b/src/tanabata/tanzaku.c @@ -13,6 +13,16 @@ int tanabata_tanzaku_add(Tanabata *tanabata, const char *name, const char *descr } int tanabata_tanzaku_rem_by_id(Tanabata *tanabata, uint64_t tanzaku_id) { + if (tanzaku_id == HOLE_ID || tanzaku_id >= tanabata->sappyou.size) { + return 1; + } + Kazari *current_kazari = tanabata->shoppyou.database; + for (uint64_t i = 0; i < tanabata->shoppyou.size; i++) { + if (current_kazari->tanzaku_id == tanzaku_id) { + current_kazari->tanzaku_id = HOLE_ID; + } + current_kazari++; + } return tanzaku_rem(&tanabata->sappyou, tanzaku_id); } @@ -20,6 +30,13 @@ int tanabata_tanzaku_rem_by_name(Tanabata *tanabata, const char *name) { Tanzaku *current_tanzaku = tanabata->sappyou.database; for (uint64_t i = 0; i < tanabata->sappyou.size; i++) { if (current_tanzaku->id != HOLE_ID && strcmp(current_tanzaku->name, name) == 0) { + Kazari *current_kazari = tanabata->shoppyou.database; + for (uint64_t j = 0; j < tanabata->shoppyou.size; j++) { + if (current_kazari->tanzaku_id == current_tanzaku->id) { + current_kazari->tanzaku_id = HOLE_ID; + } + current_kazari++; + } return tanzaku_rem(&tanabata->sappyou, current_tanzaku->id); } current_tanzaku++;