--- lbbs/src/article_view_log.c 2025/06/07 10:00:10 1.3 +++ lbbs/src/article_view_log.c 2025/10/15 03:02:17 1.13 @@ -15,13 +15,10 @@ ***************************************************************************/ #include "article_view_log.h" -#include "log.h" #include "common.h" #include "database.h" +#include "log.h" #include - -#define _XOPEN_SOURCE 500 -#define _POSIX_C_SOURCE 200809L #include ARTICLE_VIEW_LOG BBS_article_view_log; @@ -35,7 +32,7 @@ int article_view_log_load(int uid, ARTIC if (p_view_log == NULL) { - log_error("article_view_log_load() error: NULL pointer\n"); + log_error("NULL pointer error\n"); return -1; } @@ -107,7 +104,7 @@ int article_view_log_unload(ARTICLE_VIEW { if (p_view_log == NULL) { - log_error("article_view_log_unload() error: NULL pointer\n"); + log_error("NULL pointer error\n"); return -1; } @@ -123,7 +120,7 @@ int article_view_log_unload(ARTICLE_VIEW int article_view_log_save_inc(const ARTICLE_VIEW_LOG *p_view_log) { - MYSQL *db; + MYSQL *db = NULL; char sql[SQL_BUFFER_LEN]; char tuple_tmp[LINE_BUFFER_LEN]; int i; @@ -131,11 +128,11 @@ int article_view_log_save_inc(const ARTI if (p_view_log == NULL) { - log_error("article_view_log_save_inc() error: NULL pointer\n"); + log_error("NULL pointer error\n"); return -1; } - if (p_view_log->uid <= 0) + if (p_view_log->uid <= 0 || p_view_log->aid_inc_cnt == 0) { return 0; } @@ -161,6 +158,7 @@ int article_view_log_save_inc(const ARTI if (mysql_query(db, sql) != 0) { log_error("Add view_article_log error: %s\n", mysql_error(db)); + mysql_close(db); return -3; } @@ -190,7 +188,7 @@ int article_view_log_merge_inc(ARTICLE_V if (p_view_log == NULL) { - log_error("article_view_log_merge_inc() error: NULL pointer\n"); + log_error("NULL pointer error\n"); return -1; } @@ -250,7 +248,7 @@ int article_view_log_is_viewed(int32_t a if (p_view_log == NULL) { - log_error("article_view_log_is_viewed() error: NULL pointer\n"); + log_error("NULL pointer error\n"); return -1; } @@ -299,7 +297,7 @@ int article_view_log_set_viewed(int32_t if (p_view_log == NULL) { - log_error("article_view_log_set_viewed() error: NULL pointer\n"); + log_error("NULL pointer error\n"); return -1; } @@ -337,7 +335,7 @@ int article_view_log_set_viewed(int32_t } // Merge if Inc is full - if (p_view_log->aid_inc_cnt >= MAX_AID_INC_CNT) + if (p_view_log->aid_inc_cnt >= MAX_VIEWED_AID_INC_CNT) { // Save incremental article view log if (article_view_log_save_inc(p_view_log) < 0) @@ -362,9 +360,11 @@ int article_view_log_set_viewed(int32_t right = left + 1; } - for (i = p_view_log->aid_inc_cnt - 1; i >= right; i--) + if (p_view_log->aid_inc_cnt > right) { - p_view_log->aid_inc[i + 1] = p_view_log->aid_inc[i]; + memmove(p_view_log->aid_inc + right + 1, + p_view_log->aid_inc + right, + sizeof(int32_t) * (size_t)(p_view_log->aid_inc_cnt - right)); } p_view_log->aid_inc[right] = aid;