From da76b39f69dca5f7f6876795047c5f68251118e7 Mon Sep 17 00:00:00 2001 From: Krzysztof Rudnicki Date: Mon, 8 Sep 2025 16:10:08 +0200 Subject: [PATCH] chore: more lint fixes --- articles/server_c.c | 62 +++++++++++++++------------------------------ 1 file changed, 21 insertions(+), 41 deletions(-) diff --git a/articles/server_c.c b/articles/server_c.c index e263701..e9e784c 100644 --- a/articles/server_c.c +++ b/articles/server_c.c @@ -123,30 +123,11 @@ static size_t json_escaped_len(const char* s) { } static inline char* json_append_escaped(char* w, char c) { - switch (c) { - case '"': - *w++ = '\\'; - *w++ = '"'; - break; - case '\\': - *w++ = '\\'; - *w++ = '\\'; - break; - case '\n': - *w++ = '\\'; - *w++ = 'n'; - break; - case '\r': - *w++ = '\\'; - *w++ = 'r'; - break; - case '\t': - *w++ = '\\'; - *w++ = 't'; - break; - default: *w++ = c; break; - } - return w; + if (c == '"' || c == '\\') { *w++ = '\\'; *w++ = c; return w; } + if (c == '\n') { *w++ = '\\'; *w++ = 'n'; return w; } + if (c == '\r') { *w++ = '\\'; *w++ = 'r'; return w; } + if (c == '\t') { *w++ = '\\'; *w++ = 't'; return w; } + *w++ = c; return w; } static void json_escape_into(char* out, const char* s) { @@ -183,23 +164,12 @@ static inline char json_unescape_char(char c) { } static void parse_json_string_core(const char* v, char* out, size_t* w, const char** after_end) { - bool esc = false; - const char* p = v; + bool esc = false; const char* p = v; for (; *p; ++p) { char c = *p; - if (esc) { - out[(*w)++] = json_unescape_char(c); - esc = false; - continue; - } - if (c == '\\') { - esc = true; - continue; - } - if (c == '"') { - *after_end = p + 1; - break; - } + if (esc) { out[(*w)++] = json_unescape_char(c); esc = false; continue; } + if (c == '\\') { esc = true; continue; } + if (c == '"') { *after_end = p + 1; break; } out[(*w)++] = c; } if (!*after_end) *after_end = p; @@ -979,7 +949,17 @@ static char* create_article_from_body(const char* body_json) { size_t i = 1, len = strlen(tcontent); char** items = NULL; size_t cap = 0, cnt = 0; - push_str(&items, &cap, &cnt, strdup(obj)); + { + char* dup = strdup(obj); + if (!dup || push_str(&items, &cap, &cnt, dup)) { + free(dup); + free(tcontent); + free(file); + free(id); + free(obj); + return NULL; + } + } while (1) { char* one = NULL; int r = find_next_json_object(tcontent, len, &i, &one); @@ -1272,7 +1252,7 @@ typedef struct { long long createdAt; } ArticleFields; -static void load_fields(char* obj, ArticleFields* f) { +static void load_fields(const char* obj, ArticleFields* f) { f->title = json_get_string(obj, "title"); f->author = json_get_string(obj, "author"); f->body = json_get_string(obj, "body");