--- lbbs/src/article_cache.c 2025/06/08 09:25:24 1.14 +++ lbbs/src/article_cache.c 2025/06/14 09:20:13 1.16 @@ -60,6 +60,8 @@ inline static int article_cache_path(cha int article_cache_generate(const char *cache_dir, const ARTICLE *p_article, const SECTION_LIST *p_section, const char *content, const char *sub_ip, int overwrite) { + static char *content_f; // static buffer in large size + char data_file[FILE_PATH_LEN]; int fd; ARTICLE_CACHE cache; @@ -68,7 +70,6 @@ int article_cache_generate(const char *c char header[ARTICLE_HEADER_MAX_LEN]; size_t header_len; long header_line_cnt; - char content_f[ARTICLE_CONTENT_MAX_LEN]; char footer[ARTICLE_FOOTER_MAX_LEN]; size_t footer_len; long footer_line_cnt; @@ -80,6 +81,12 @@ int article_cache_generate(const char *c return -1; } + if (content_f == NULL && (content_f = malloc(ARTICLE_CONTENT_MAX_LEN)) == NULL) + { + log_error("malloc(content_f) error: OOM\n"); + return -1; + } + if (article_cache_path(data_file, sizeof(data_file), cache_dir, p_article) < 0) { log_error("article_cache_path(dir=%s, cid=%d) error\n", cache_dir, p_article->cid); @@ -111,7 +118,7 @@ int article_cache_generate(const char *c p_article->username, p_article->nickname, p_section->sname, p_section->stitle, p_article->title, BBS_name, str_sub_dt); snprintf(footer, sizeof(footer), - "--\n%s¡ù À´Ô´: %s http://%s [FROM: %s]\033[m\n\n", + "\n--\n%s¡ù À´Ô´: %s http://%s [FROM: %s]\033[m\n\n", BBS_article_footer_color[p_article->aid % BBS_article_footer_color_count], BBS_name, BBS_server, sub_ip);