From f29858361c5c0964ddf18b9f9eb66e46650f0cc4 Mon Sep 17 00:00:00 2001 From: Masahiko AMANO Date: Sat, 24 Dec 2022 19:25:06 +0300 Subject: [PATCH] perf(core): improve remove functions --- src/core/sappyou.c | 11 ++++++++--- src/core/sasahyou.c | 11 ++++++++--- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/core/sappyou.c b/src/core/sappyou.c index 43fb8ea..4763b4f 100644 --- a/src/core/sappyou.c +++ b/src/core/sappyou.c @@ -159,9 +159,14 @@ int tanzaku_rem(Sappyou *sappyou, uint64_t tanzaku_id) { return 0; } sappyou->database[tanzaku_id].id = HOLE_ID; - sappyou->hole_cnt++; - sappyou->holes = realloc(sappyou->holes, sappyou->hole_cnt); - sappyou->holes[sappyou->hole_cnt - 1] = sappyou->database + tanzaku_id; + if (tanzaku_id == sappyou->size - 1) { + sappyou->size--; + sappyou->database = realloc(sappyou->database, sappyou->size * sizeof(Tanzaku)); + } else { + sappyou->hole_cnt++; + sappyou->holes = realloc(sappyou->holes, sappyou->hole_cnt); + sappyou->holes[sappyou->hole_cnt - 1] = sappyou->database + tanzaku_id; + } sappyou->modified_ts = time(NULL); return 0; } diff --git a/src/core/sasahyou.c b/src/core/sasahyou.c index b2c5787..aa049a1 100644 --- a/src/core/sasahyou.c +++ b/src/core/sasahyou.c @@ -150,9 +150,14 @@ int sasa_rem(Sasahyou *sasahyou, uint64_t sasa_id) { return 0; } sasahyou->database[sasa_id].id = HOLE_ID; - sasahyou->hole_cnt++; - sasahyou->holes = realloc(sasahyou->holes, sasahyou->hole_cnt * sizeof(Sasa *)); - sasahyou->holes[sasahyou->hole_cnt - 1] = sasahyou->database + sasa_id; + if (sasa_id == sasahyou->size - 1) { + sasahyou->size--; + sasahyou->database = realloc(sasahyou->database, sasahyou->size * sizeof(Sasa)); + } else { + sasahyou->hole_cnt++; + sasahyou->holes = realloc(sasahyou->holes, sasahyou->hole_cnt * sizeof(Sasa *)); + sasahyou->holes[sasahyou->hole_cnt - 1] = sasahyou->database + sasa_id; + } sasahyou->modified_ts = time(NULL); return 0; }