--- lbbs/src/article_cache.c 2025/06/11 12:31:51 1.15 +++ 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);