From 35a09217b906ae8fee1f4209c8786461dabcc93a Mon Sep 17 00:00:00 2001 From: Bastian Dehn Date: Wed, 11 Feb 2026 19:37:04 +0100 Subject: [PATCH] fix static memory copy to struct --- src/feierabend.c | 12 ++++++++---- src/feierabend.h | 12 +++++++++--- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/feierabend.c b/src/feierabend.c index bec0fee..542f862 100644 --- a/src/feierabend.c +++ b/src/feierabend.c @@ -173,16 +173,20 @@ int main(int argc, const char* argv[]) fabend->begin = _set_time(fabend->begin, fabend->begin_tm, atoi(argv[1]), atoi(argv[2])); - time(&fabend->now); - fabend->now_tm = localtime(&fabend->now); + fabend->now = time(NULL); + const struct tm* tmp_now = localtime(&fabend->now); + memcpy(fabend->now_tm, tmp_now, sizeof(struct tm)); + if (argc == 5) fabend->now = _set_time(fabend->now, fabend->now_tm, atoi(argv[3]), atoi(argv[4])); fabend->worktime = get_eight_hour_end_worktime(fabend->begin); - fabend->work_end_tm = localtime(&fabend->worktime); + const struct tm* tmp_work_end = localtime(&fabend->worktime); + memcpy(fabend->work_end_tm, tmp_work_end, sizeof(struct tm)); fabend->worktime = get_ten_hour_end_worktime(fabend->begin); - fabend->max_work_end_tm = localtime(&fabend->worktime); + const struct tm* tmp_max_work_end = localtime(&fabend->worktime); + memcpy(fabend->max_work_end_tm, tmp_max_work_end, sizeof(struct tm)); _print_time_now(fabend); printf("\n"); diff --git a/src/feierabend.h b/src/feierabend.h index f3ca90c..1006393 100644 --- a/src/feierabend.h +++ b/src/feierabend.h @@ -25,10 +25,10 @@ feierabend* feierabend_init() fabend->now = 0; fabend->begin = 0; fabend->worktime = 0; - fabend->now_tm = NULL; + fabend->now_tm = malloc(sizeof(struct tm)); fabend->begin_tm = malloc(sizeof(struct tm)); - fabend->work_end_tm = NULL; - fabend->max_work_end_tm = NULL; + fabend->work_end_tm = malloc(sizeof(struct tm)); + fabend->max_work_end_tm = malloc(sizeof(struct tm)); return fabend; } @@ -37,6 +37,12 @@ void feierabend_free(feierabend* fabend) { free(fabend->begin_tm); fabend->begin_tm = NULL; + free(fabend->now_tm); + fabend->now_tm = NULL; + free(fabend->work_end_tm); + fabend->work_end_tm = NULL; + free(fabend->max_work_end_tm); + fabend->max_work_end_tm = NULL; } #endif \ No newline at end of file -- 2.47.3