--- lbbs/src/article_post.c 2025/06/15 02:24:45 1.15 +++ lbbs/src/article_post.c 2025/06/15 06:19:21 1.18 @@ -81,7 +81,8 @@ int article_post(const SECTION_LIST *p_s if (p_editor_data == NULL) { log_error("editor_data_load() error\n"); - return -2; + ret = -1; + goto cleanup; } // Set title and sign @@ -212,7 +213,7 @@ int article_post(const SECTION_LIST *p_s if (len_content < 0) { log_error("editor_data_save() error\n"); - ret = -2; + ret = -1; goto cleanup; } @@ -377,6 +378,9 @@ int article_post(const SECTION_LIST *p_s goto cleanup; } + mysql_close(db); + db = NULL; + clearscr(); moveto(1, 1); prints("发送完成,新文章通常会在%d秒后可见", BBS_section_list_load_interval); @@ -429,21 +433,12 @@ int article_modify(const SECTION_LIST *p return 0; } - if (!checkpriv(&BBS_priv, p_section->sid, S_POST)) - { - clearscr(); - moveto(1, 1); - prints("您没有权限在本版块发表文章\n"); - press_any_key(); - - return 0; - } - db = db_open(); if (db == NULL) { log_error("db_open() error: %s\n", mysql_error(db)); - return -1; + ret = -1; + goto cleanup; } snprintf(sql, sizeof(sql), @@ -455,13 +450,13 @@ int article_modify(const SECTION_LIST *p if (mysql_query(db, sql) != 0) { log_error("Query article content error: %s\n", mysql_error(db)); - ret = -2; + ret = -1; goto cleanup; } if ((rs = mysql_use_result(db)) == NULL) { log_error("Get article content data failed\n"); - ret = -2; + ret = -1; goto cleanup; } @@ -485,7 +480,7 @@ int article_modify(const SECTION_LIST *p if (p_editor_data == NULL) { log_error("editor_data_load(aid=%d, cid=%d) error\n", p_article->aid, atoi(row[0])); - ret = -3; + ret = -1; goto cleanup; } @@ -544,7 +539,7 @@ int article_modify(const SECTION_LIST *p if (len_content < 0) { log_error("editor_data_save() error\n"); - ret = -2; + ret = -1; goto cleanup; } @@ -661,6 +656,9 @@ int article_modify(const SECTION_LIST *p goto cleanup; } + mysql_close(db); + db = NULL; + clearscr(); moveto(1, 1); prints("修改完成,新内容通常会在%d秒后可见", BBS_section_list_load_interval); @@ -731,7 +729,8 @@ int article_reply(const SECTION_LIST *p_ if (db == NULL) { log_error("db_open() error: %s\n", mysql_error(db)); - return -1; + ret = -1; + goto cleanup; } snprintf(sql, sizeof(sql), @@ -741,12 +740,14 @@ int article_reply(const SECTION_LIST *p_ if (mysql_query(db, sql) != 0) { log_error("Query article status error: %s\n", mysql_error(db)); - return -2; + ret = -1; + goto cleanup; } if ((rs = mysql_store_result(db)) == NULL) { log_error("Get article status data failed\n"); - return -2; + ret = -1; + goto cleanup; } if ((row = mysql_fetch_row(rs))) @@ -761,6 +762,9 @@ int article_reply(const SECTION_LIST *p_ if (topic_locked) // Reply is not allowed { + mysql_close(db); + db = NULL; + clearscr(); moveto(1, 1); prints("该主题谢绝回复"); @@ -778,12 +782,14 @@ int article_reply(const SECTION_LIST *p_ if (mysql_query(db, sql) != 0) { log_error("Query article content error: %s\n", mysql_error(db)); - return -2; + ret = -1; + goto cleanup; } if ((rs = mysql_use_result(db)) == NULL) { log_error("Get article content data failed\n"); - return -2; + ret = -1; + goto cleanup; } if ((row = mysql_fetch_row(rs))) @@ -822,6 +828,11 @@ int article_reply(const SECTION_LIST *p_ len += 2; memcpy(content + len, content_f + line_offsets[i], (size_t)(line_offsets[i + 1] - line_offsets[i])); len += (line_offsets[i + 1] - line_offsets[i]); + if (content[len - 1] != '\n') // Appennd \n if not exist + { + content[len] = '\n'; + len++; + } } if (content[len - 1] != '\n') // Appennd \n if not exist { @@ -837,7 +848,7 @@ int article_reply(const SECTION_LIST *p_ if (p_editor_data == NULL) { log_error("editor_data_load(aid=%d, cid=%d) error\n", p_article->aid, atoi(row[0])); - ret = -3; + ret = -1; goto cleanup; } @@ -972,7 +983,7 @@ int article_reply(const SECTION_LIST *p_ if (len_content < 0) { log_error("editor_data_save() error\n"); - ret = -2; + ret = -1; goto cleanup; } @@ -1153,6 +1164,9 @@ int article_reply(const SECTION_LIST *p_ goto cleanup; } + mysql_close(db); + db = NULL; + clearscr(); moveto(1, 1); prints("发送完成,新文章通常会在%d秒后可见", BBS_section_list_load_interval);