fix: 优化代码格式和类型安全性

This commit is contained in:
2025-08-20 16:06:47 +08:00
parent 359c9f247a
commit ef62dc2075
5 changed files with 127 additions and 21 deletions

View File

@@ -7,7 +7,7 @@
// log_Handler_file_ex_t与log_Handler处于连续内存中
// 使用char*指针进行偏移达到以偏移1个字节为单位的偏移
#define Handler_file_EX_PRT(handler) \
((log_Handler_file_ex_t *)((char *)handler + sizeof(log_Handler)))
((log_Handler_file_ex_t *)((char *)(handler) + sizeof(log_Handler)))
#define FILE_NAME_MAX_SIZE 50
@@ -46,9 +46,10 @@ static void outputFileHandler(log_Handler *handler, const char *message) {
fputs(message, handler->stream);
log_Handler_file_ex_t *handler_ex = Handler_file_EX_PRT(handler);
handler_ex->file_size += strlen(message);
if (handler_ex->file_size > handler_ex->file_size_max)
if (handler_ex->file_size > handler_ex->file_size_max) {
changeFile(handler);
}
}
log_Handler *loggingHandlerFile(const char *file_name, unsigned int max_size) {
char new_file_name[FILE_NAME_MAX_SIZE];
@@ -62,24 +63,27 @@ log_Handler *loggingHandlerFile(const char *file_name, unsigned int max_size) {
do {
sprintf(new_file_name, "%s_%d.log", file_name, suffix++);
fp = fopen(new_file_name, "at");
if (fp == NULL)
if (fp == NULL) {
goto ERROR;
}
file_size = getFileSize(fp);
} while (file_size > max_size);
/// 分配log_Handler与记录文件大小的空间
handler = (log_Handler *)malloc(sizeof(log_Handler) +
sizeof(log_Handler_file_ex_t));
if (handler == NULL)
if (handler == NULL) {
goto ERROR;
}
handler_ex = Handler_file_EX_PRT(handler);
handler_ex->file_size_max = max_size;
handler_ex->file_size = file_size;
handler_ex->suffix = suffix;
handler_ex->file_name = strdup(file_name);
if (handler_ex->file_name == NULL)
if (handler_ex->file_name == NULL) {
goto ERROR;
}
handler->stream = fp;
handler->apply_color = false;
@@ -88,8 +92,9 @@ log_Handler *loggingHandlerFile(const char *file_name, unsigned int max_size) {
return handler;
ERROR:
if (fp)
if (fp) {
fclose(fp);
}
if (handler) {
free(Handler_file_EX_PRT(handler)->file_name); // 直接释放无需检查NULL
free(handler);