From patchwork Thu May 30 12:50:40 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Steinhardt X-Patchwork-Id: 13680359 Received: from fout6-smtp.messagingengine.com (fout6-smtp.messagingengine.com [103.168.172.149]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2E69B13211A for ; Thu, 30 May 2024 12:50:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=103.168.172.149 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717073446; cv=none; b=jqrpO+m7txSBRcgxELnJUZSwf02IPfXZWM8rIQCNaHYOSvPkjbFPyC8B7aTPfYMHgHJZ5F6kDta8x2xYkUXzd28rKWsq44MTMaS6pIwuvMxZPJ/3O3r5YwZCB5OnnOy7viI+UWRQ8bq27L9UIIPuHoeDjs8bozCJJx01XOnv2Yk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717073446; c=relaxed/simple; bh=pTexTDulOorsbhvcG6gtnJqwW0BHo9okGrKxPrMHQp8=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=Tzb2iuKGumO093Yrwe2RvipH+Ndx9ihBHrTIpFzrHPGoFiY8BuUx7BQ+VqhU441+o5qoLvn3Z815PH1Fy01OTxIBZR7N1oIxrjDxM/yuzy8M63UyiQWLzUVwXykXNi0wHHcfJcgaBz0mJlG+JPEWxx3Rpvjno7VsW6hXFy4w6ao= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im; spf=pass smtp.mailfrom=pks.im; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b=CGf/QTLV; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=EyGGd2Rs; arc=none smtp.client-ip=103.168.172.149 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=pks.im Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=pks.im Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=pks.im header.i=@pks.im header.b="CGf/QTLV"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="EyGGd2Rs" Received: from compute7.internal (compute7.nyi.internal [10.202.2.48]) by mailfout.nyi.internal (Postfix) with ESMTP id 608CC13800D8; Thu, 30 May 2024 08:50:43 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute7.internal (MEProxy); Thu, 30 May 2024 08:50:43 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pks.im; h=cc:cc :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm1; t=1717073443; x=1717159843; bh=XPfEL/aVLf YbGRAyIAiTjwnRciSLM5Tl1ozR2eckK/o=; b=CGf/QTLV1izoB1ykvJb3x0weiJ 77qfSlOEaWUsFxv6hreehVa5fym+2dD4vz6oq27J0q4fOtEa0aRx0ayhroA1zsOK avDcgf6kRIvmDUtDe9wzzHNuIaiIm7nUZi0ub0zB+9zlZXyl+UL/qjZXJFjtaTXP 9Qkn2Eftv6apPszvgfAqXll8sBV9MMtqSbDgksvLMVptqJaEgIiN2YjoQzclXYsh IMqXFkowJ+LIg5Q4i77hl+KqW896CO81M26BNVeYJn7ecYpG8eTbXYU2RJujWVNC 1FpFj2JcGpwMr/g7g0gDbcaWTVvkspH1EX65S1yQjW725jSruzOL5+rrX3RQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; t=1717073443; x=1717159843; bh=XPfEL/aVLfYbGRAyIAiTjwnRciSL M5Tl1ozR2eckK/o=; b=EyGGd2RsMPfUCPS4QXLOWKVLYnAK5oblfkKDBy5Dxk6M BFx75ygmYsWM/viQ6SRNPyX3I/O19tZkEgstOEsEChFNo9YfaidZ//9MOruXAapU GmXWDr//tGqFqR0mYFqKjQGa63VYzKHfOM4Mtywigd7zCMgSsbkCV7b7Alpajztj XGOX2S4IELBD7UNofCxfobSTSyurwnRO/5JOtqc5e2QX5QwTo0T7JyRXBiB/88yr WwiywBO77/raehv7bVZ2SLxlhQRSCbdyUDAIitNXJv8fvq4vA8FFB3ATwqnwxosz ca0b1lKFy8mDLyAY108tPSWfub5qlT2ONYxqFRhQNw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvledrvdekgedgheehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpeffhffvvefukfhfgggtuggjsehgtd erredttddvnecuhfhrohhmpefrrghtrhhitghkucfuthgvihhnhhgrrhguthcuoehpshes phhkshdrihhmqeenucggtffrrghtthgvrhhnpeegtddvkeegveejjeefgfdvffetfedvie dvleeuieelleffteegvdevvdejveekffenucffohhmrghinhepuhhpuggrthgvrdhnvgif pdhuphgurghtvgdrnhgrmhgvnecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpe hmrghilhhfrhhomhepphhssehpkhhsrdhimh X-ME-Proxy: Feedback-ID: i197146af:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Thu, 30 May 2024 08:50:42 -0400 (EDT) Received: by localhost (OpenSMTPD) with ESMTPSA id 3d532152 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO); Thu, 30 May 2024 12:50:26 +0000 (UTC) Date: Thu, 30 May 2024 14:50:40 +0200 From: Patrick Steinhardt To: git@vger.kernel.org Cc: Jeff King , Junio C Hamano Subject: [PATCH v2 02/19] global: assign non-const strings as required Message-ID: <3430bcc09bbb4a9fe86ba40b0b3a0d4864c92e4f.1717073346.git.ps@pks.im> References: Precedence: bulk X-Mailing-List: git@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: There are several cases where we initialize non-const fields with string constants. This is invalid and will cause warnings once we enable the `-Wwrite-strings` warning. Adapt those cases to instead use string arrays. Signed-off-by: Patrick Steinhardt --- builtin/remote.c | 3 +- diff.c | 3 +- entry.c | 7 ++-- ident.c | 9 +++- line-log.c | 3 +- object-file.c | 3 +- pretty.c | 5 ++- refs/reftable-backend.c | 5 ++- reftable/basics_test.c | 5 ++- reftable/block_test.c | 4 +- reftable/merged_test.c | 52 ++++++++++++----------- reftable/readwrite_test.c | 60 ++++++++++++++++----------- reftable/stack_test.c | 87 +++++++++++++++++++++------------------ 13 files changed, 144 insertions(+), 102 deletions(-) diff --git a/builtin/remote.c b/builtin/remote.c index d52b1c0e10..0324a5d48d 100644 --- a/builtin/remote.c +++ b/builtin/remote.c @@ -494,11 +494,12 @@ static int get_head_names(const struct ref *remote_refs, struct ref_states *stat struct ref *ref, *matches; struct ref *fetch_map = NULL, **fetch_map_tail = &fetch_map; struct refspec_item refspec; + char refspec_str[] = "refs/heads/*"; memset(&refspec, 0, sizeof(refspec)); refspec.force = 0; refspec.pattern = 1; - refspec.src = refspec.dst = "refs/heads/*"; + refspec.src = refspec.dst = refspec_str; get_fetch_map(remote_refs, &refspec, &fetch_map_tail, 0); matches = guess_remote_head(find_ref_by_name(remote_refs, "HEAD"), fetch_map, 1); diff --git a/diff.c b/diff.c index ffd867ef6c..1439a5a01d 100644 --- a/diff.c +++ b/diff.c @@ -7231,11 +7231,12 @@ size_t fill_textconv(struct repository *r, struct diff_filespec *df, char **outbuf) { + static char empty_str[] = ""; size_t size; if (!driver) { if (!DIFF_FILE_VALID(df)) { - *outbuf = ""; + *outbuf = empty_str; return 0; } if (diff_populate_filespec(r, df, NULL)) diff --git a/entry.c b/entry.c index b8c257f6f9..2fc06ac90c 100644 --- a/entry.c +++ b/entry.c @@ -175,6 +175,7 @@ int finish_delayed_checkout(struct checkout *state, int show_progress) struct string_list_item *filter, *path; struct progress *progress = NULL; struct delayed_checkout *dco = state->delayed_checkout; + char empty_str[] = ""; if (!state->delayed_checkout) return errs; @@ -189,7 +190,7 @@ int finish_delayed_checkout(struct checkout *state, int show_progress) if (!async_query_available_blobs(filter->string, &available_paths)) { /* Filter reported an error */ errs = 1; - filter->string = ""; + filter->string = empty_str; continue; } if (available_paths.nr <= 0) { @@ -199,7 +200,7 @@ int finish_delayed_checkout(struct checkout *state, int show_progress) * filter from the list (see * "string_list_remove_empty_items" call below). */ - filter->string = ""; + filter->string = empty_str; continue; } @@ -225,7 +226,7 @@ int finish_delayed_checkout(struct checkout *state, int show_progress) * Do not ask the filter for available blobs, * again, as the filter is likely buggy. */ - filter->string = ""; + filter->string = empty_str; continue; } ce = index_file_exists(state->istate, path->string, diff --git a/ident.c b/ident.c index cc7afdbf81..df7aa42802 100644 --- a/ident.c +++ b/ident.c @@ -46,9 +46,14 @@ static struct passwd *xgetpwuid_self(int *is_bogus) pw = getpwuid(getuid()); if (!pw) { static struct passwd fallback; - fallback.pw_name = "unknown"; + static char fallback_name[] = "unknown"; #ifndef NO_GECOS_IN_PWENT - fallback.pw_gecos = "Unknown"; + static char fallback_gcos[] = "Unknown"; +#endif + + fallback.pw_name = fallback_name; +#ifndef NO_GECOS_IN_PWENT + fallback.pw_gecos = fallback_gcos; #endif pw = &fallback; if (is_bogus) diff --git a/line-log.c b/line-log.c index 8ff6ccb772..d9bf2c8120 100644 --- a/line-log.c +++ b/line-log.c @@ -1032,6 +1032,7 @@ static int process_diff_filepair(struct rev_info *rev, struct range_set tmp; struct diff_ranges diff; mmfile_t file_parent, file_target; + char empty_str[] = ""; assert(pair->two->path); while (rg) { @@ -1056,7 +1057,7 @@ static int process_diff_filepair(struct rev_info *rev, file_parent.ptr = pair->one->data; file_parent.size = pair->one->size; } else { - file_parent.ptr = ""; + file_parent.ptr = empty_str; file_parent.size = 0; } diff --git a/object-file.c b/object-file.c index 610b1f465c..c9e374e57e 100644 --- a/object-file.c +++ b/object-file.c @@ -282,12 +282,13 @@ static struct cached_object { } *cached_objects; static int cached_object_nr, cached_object_alloc; +static char empty_tree_buf[] = ""; static struct cached_object empty_tree = { .oid = { .hash = EMPTY_TREE_SHA1_BIN_LITERAL, }, .type = OBJ_TREE, - .buf = "", + .buf = empty_tree_buf, }; static struct cached_object *find_cached_object(const struct object_id *oid) diff --git a/pretty.c b/pretty.c index ec05db5655..1a0030b32a 100644 --- a/pretty.c +++ b/pretty.c @@ -1583,9 +1583,10 @@ static size_t format_commit_one(struct strbuf *sb, /* in UTF-8 */ return 1; case 'D': { + char empty_str[] = ""; const struct decoration_options opts = { - .prefix = "", - .suffix = "" + .prefix = empty_str, + .suffix = empty_str, }; format_decorations(sb, commit, c->auto_color, &opts); diff --git a/refs/reftable-backend.c b/refs/reftable-backend.c index 1af86bbdec..1908e74dea 100644 --- a/refs/reftable-backend.c +++ b/refs/reftable-backend.c @@ -1285,6 +1285,7 @@ static int write_copy_table(struct reftable_writer *writer, void *cb_data) struct strbuf errbuf = STRBUF_INIT; size_t logs_nr = 0, logs_alloc = 0, i; const char *committer_info; + char head[] = "HEAD"; int ret; committer_info = git_committer_info(0); @@ -1387,7 +1388,7 @@ static int write_copy_table(struct reftable_writer *writer, void *cb_data) if (append_head_reflog) { ALLOC_GROW(logs, logs_nr + 1, logs_alloc); logs[logs_nr] = logs[logs_nr - 1]; - logs[logs_nr].refname = "HEAD"; + logs[logs_nr].refname = head; logs_nr++; } } @@ -1463,7 +1464,7 @@ static int write_copy_table(struct reftable_writer *writer, void *cb_data) string_list_clear(&skip, 0); strbuf_release(&errbuf); for (i = 0; i < logs_nr; i++) { - if (!strcmp(logs[i].refname, "HEAD")) + if (logs[i].refname == head) continue; logs[i].refname = NULL; reftable_log_record_release(&logs[i]); diff --git a/reftable/basics_test.c b/reftable/basics_test.c index 997c4d9e01..23fab22eb1 100644 --- a/reftable/basics_test.c +++ b/reftable/basics_test.c @@ -58,8 +58,9 @@ static void test_binsearch(void) static void test_names_length(void) { - char *a[] = { "a", "b", NULL }; - EXPECT(names_length(a) == 2); + char a[] = "a", b[] = "b"; + char *names[] = { a, b, NULL }; + EXPECT(names_length(names) == 2); } static void test_parse_names_normal(void) diff --git a/reftable/block_test.c b/reftable/block_test.c index 26a9cfbc83..d5967b214d 100644 --- a/reftable/block_test.c +++ b/reftable/block_test.c @@ -19,7 +19,7 @@ license that can be found in the LICENSE file or at static void test_block_read_write(void) { const int header_off = 21; /* random */ - char *names[30]; + char *names[30], empty_str[] = ""; const int N = ARRAY_SIZE(names); const int block_size = 1024; struct reftable_block block = { NULL }; @@ -42,7 +42,7 @@ static void test_block_read_write(void) block_writer_init(&bw, BLOCK_TYPE_REF, block.data, block_size, header_off, hash_size(GIT_SHA1_FORMAT_ID)); - rec.u.ref.refname = ""; + rec.u.ref.refname = empty_str; rec.u.ref.value_type = REFTABLE_REF_DELETION; n = block_writer_add(&bw, &rec); EXPECT(n == REFTABLE_API_ERROR); diff --git a/reftable/merged_test.c b/reftable/merged_test.c index 530fc82d1c..fd5a065e42 100644 --- a/reftable/merged_test.c +++ b/reftable/merged_test.c @@ -123,14 +123,15 @@ static void readers_destroy(struct reftable_reader **readers, size_t n) static void test_merged_between(void) { + char a[] = "a", b[] = "b"; struct reftable_ref_record r1[] = { { - .refname = "b", + .refname = b, .update_index = 1, .value_type = REFTABLE_REF_VAL1, .value.val1 = { 1, 2, 3, 0 }, } }; struct reftable_ref_record r2[] = { { - .refname = "a", + .refname = a, .update_index = 2, .value_type = REFTABLE_REF_DELETION, } }; @@ -163,40 +164,41 @@ static void test_merged_between(void) static void test_merged(void) { + char a[] = "a", b[] = "b", c[] = "c", d[] = "d"; struct reftable_ref_record r1[] = { { - .refname = "a", + .refname = a, .update_index = 1, .value_type = REFTABLE_REF_VAL1, .value.val1 = { 1 }, }, { - .refname = "b", + .refname = b, .update_index = 1, .value_type = REFTABLE_REF_VAL1, .value.val1 = { 1 }, }, { - .refname = "c", + .refname = c, .update_index = 1, .value_type = REFTABLE_REF_VAL1, .value.val1 = { 1 }, } }; struct reftable_ref_record r2[] = { { - .refname = "a", + .refname = a, .update_index = 2, .value_type = REFTABLE_REF_DELETION, } }; struct reftable_ref_record r3[] = { { - .refname = "c", + .refname = c, .update_index = 3, .value_type = REFTABLE_REF_VAL1, .value.val1 = { 2 }, }, { - .refname = "d", + .refname = d, .update_index = 3, .value_type = REFTABLE_REF_VAL1, .value.val1 = { 1 }, @@ -289,48 +291,52 @@ merged_table_from_log_records(struct reftable_log_record **logs, static void test_merged_logs(void) { + char a[] = "a"; + char name[] = "jane doe", email[] = "jane@invalid"; + char message1[] = "message1", message2[] = "message2"; + char message3[] = "message3"; struct reftable_log_record r1[] = { { - .refname = "a", + .refname = a, .update_index = 2, .value_type = REFTABLE_LOG_UPDATE, .value.update = { .old_hash = { 2 }, /* deletion */ - .name = "jane doe", - .email = "jane@invalid", - .message = "message2", + .name = name, + .email = email, + .message = message2, } }, { - .refname = "a", + .refname = a, .update_index = 1, .value_type = REFTABLE_LOG_UPDATE, .value.update = { .old_hash = { 1 }, .new_hash = { 2 }, - .name = "jane doe", - .email = "jane@invalid", - .message = "message1", + .name = name, + .email = email, + .message = message1, } }, }; struct reftable_log_record r2[] = { { - .refname = "a", + .refname = a, .update_index = 3, .value_type = REFTABLE_LOG_UPDATE, .value.update = { .new_hash = { 3 }, - .name = "jane doe", - .email = "jane@invalid", - .message = "message3", + .name = name, + .email = email, + .message = message3, } }, }; struct reftable_log_record r3[] = { { - .refname = "a", + .refname = a, .update_index = 2, .value_type = REFTABLE_LOG_DELETION, }, @@ -400,13 +406,13 @@ static void test_merged_logs(void) static void test_default_write_opts(void) { + char master[] = "master"; struct reftable_write_options opts = { 0 }; struct strbuf buf = STRBUF_INIT; struct reftable_writer *w = reftable_new_writer(&strbuf_add_void, &noop_flush, &buf, &opts); - struct reftable_ref_record rec = { - .refname = "master", + .refname = master, .update_index = 1, }; int err; diff --git a/reftable/readwrite_test.c b/reftable/readwrite_test.c index a6dbd214c5..064d693111 100644 --- a/reftable/readwrite_test.c +++ b/reftable/readwrite_test.c @@ -56,6 +56,7 @@ static void write_table(char ***names, struct strbuf *buf, int N, int i = 0, n; struct reftable_log_record log = { NULL }; const struct reftable_stats *stats = NULL; + char message[] = "message"; REFTABLE_CALLOC_ARRAY(*names, N + 1); @@ -86,7 +87,7 @@ static void write_table(char ***names, struct strbuf *buf, int N, log.update_index = update_index; log.value_type = REFTABLE_LOG_UPDATE; set_test_hash(log.value.update.new_hash, i); - log.value.update.message = "message"; + log.value.update.message = message; n = reftable_writer_add_log(w, &log); EXPECT(n == 0); @@ -111,23 +112,28 @@ static void write_table(char ***names, struct strbuf *buf, int N, static void test_log_buffer_size(void) { + char refname[] = "refs/heads/master"; + char name[] = "Han-Wen Hienhuys"; + char email[] = "hanwen@google.com"; + char message[] = "commit: 9\n"; struct strbuf buf = STRBUF_INIT; struct reftable_write_options opts = { .block_size = 4096, }; int err; int i; - struct reftable_log_record - log = { .refname = "refs/heads/master", - .update_index = 0xa, - .value_type = REFTABLE_LOG_UPDATE, - .value = { .update = { - .name = "Han-Wen Nienhuys", - .email = "hanwen@google.com", - .tz_offset = 100, - .time = 0x5e430672, - .message = "commit: 9\n", - } } }; + struct reftable_log_record log = { + .refname = refname, + .update_index = 0xa, + .value_type = REFTABLE_LOG_UPDATE, + .value.update = { + .name = name, + .email = email, + .tz_offset = 100, + .time = 0x5e430672, + .message = message, + }, + }; struct reftable_writer *w = reftable_new_writer(&strbuf_add_void, &noop_flush, &buf, &opts); @@ -149,6 +155,9 @@ static void test_log_buffer_size(void) static void test_log_overflow(void) { + char refname[] = "refs/heads/master"; + char name[] = "Han-Wen Hienhuys"; + char email[] = "hanwen@google.com"; struct strbuf buf = STRBUF_INIT; char msg[256] = { 0 }; struct reftable_write_options opts = { @@ -156,15 +165,15 @@ static void test_log_overflow(void) }; int err; struct reftable_log_record log = { - .refname = "refs/heads/master", + .refname = refname, .update_index = 0xa, .value_type = REFTABLE_LOG_UPDATE, .value = { .update = { .old_hash = { 1 }, .new_hash = { 2 }, - .name = "Han-Wen Nienhuys", - .email = "hanwen@google.com", + .name = name, + .email = email, .tz_offset = 100, .time = 0x5e430672, .message = msg, @@ -290,17 +299,20 @@ static void test_log_zlib_corruption(void) struct reftable_writer *w = reftable_new_writer(&strbuf_add_void, &noop_flush, &buf, &opts); const struct reftable_stats *stats = NULL; + char refname[] = "refname"; + char name[] = "My Name"; + char email[] = "myname@invalid"; char message[100] = { 0 }; int err, i, n; struct reftable_log_record log = { - .refname = "refname", + .refname = refname, .value_type = REFTABLE_LOG_UPDATE, .value = { .update = { .new_hash = { 1 }, .old_hash = { 2 }, - .name = "My Name", - .email = "myname@invalid", + .name = name, + .email = email, .message = message, }, }, @@ -727,8 +739,9 @@ static void test_write_empty_key(void) struct strbuf buf = STRBUF_INIT; struct reftable_writer *w = reftable_new_writer(&strbuf_add_void, &noop_flush, &buf, &opts); + char refname[] = ""; struct reftable_ref_record ref = { - .refname = "", + .refname = refname, .update_index = 1, .value_type = REFTABLE_REF_DELETION, }; @@ -750,20 +763,21 @@ static void test_write_key_order(void) struct strbuf buf = STRBUF_INIT; struct reftable_writer *w = reftable_new_writer(&strbuf_add_void, &noop_flush, &buf, &opts); + char a[] = "a", b[] = "b", target[] = "target"; struct reftable_ref_record refs[2] = { { - .refname = "b", + .refname = b, .update_index = 1, .value_type = REFTABLE_REF_SYMREF, .value = { - .symref = "target", + .symref = target, }, }, { - .refname = "a", + .refname = a, .update_index = 1, .value_type = REFTABLE_REF_SYMREF, .value = { - .symref = "target", + .symref = target, }, } }; diff --git a/reftable/stack_test.c b/reftable/stack_test.c index 7889f818d1..c6d88e6ea8 100644 --- a/reftable/stack_test.c +++ b/reftable/stack_test.c @@ -83,7 +83,7 @@ static void test_read_file(void) char out[1024] = "line1\n\nline2\nline3"; int n, err; char **names = NULL; - char *want[] = { "line1", "line2", "line3" }; + const char *want[] = { "line1", "line2", "line3" }; int i = 0; EXPECT(fd > 0); @@ -116,13 +116,14 @@ static void test_parse_names(void) static void test_names_equal(void) { - char *a[] = { "a", "b", "c", NULL }; - char *b[] = { "a", "b", "d", NULL }; - char *c[] = { "a", "b", NULL }; - - EXPECT(names_equal(a, a)); - EXPECT(!names_equal(a, b)); - EXPECT(!names_equal(a, c)); + char a[] = "a", b[] = "b", c[] = "c", d[] = "d"; + char *abc[] = { a, b, c, NULL }; + char *abd[] = { a, b, d, NULL }; + char *ab[] = { a, b, NULL }; + + EXPECT(names_equal(abc, abc)); + EXPECT(!names_equal(abc, abd)); + EXPECT(!names_equal(abc, ab)); } static int write_test_ref(struct reftable_writer *wr, void *arg) @@ -155,11 +156,12 @@ static void test_reftable_stack_add_one(void) }; struct reftable_stack *st = NULL; int err; + char head[] = "HEAD", master[] = "master"; struct reftable_ref_record ref = { - .refname = "HEAD", + .refname = head, .update_index = 1, .value_type = REFTABLE_REF_SYMREF, - .value.symref = "master", + .value.symref = master, }; struct reftable_ref_record dest = { NULL }; struct stat stat_result = { 0 }; @@ -215,17 +217,18 @@ static void test_reftable_stack_uptodate(void) char *dir = get_tmp_dir(__LINE__); int err; + char head[] = "HEAD", branch2[] = "branch2", master[] = "master"; struct reftable_ref_record ref1 = { - .refname = "HEAD", + .refname = head, .update_index = 1, .value_type = REFTABLE_REF_SYMREF, - .value.symref = "master", + .value.symref = master, }; struct reftable_ref_record ref2 = { - .refname = "branch2", + .refname = branch2, .update_index = 2, .value_type = REFTABLE_REF_SYMREF, - .value.symref = "master", + .value.symref = master, }; @@ -262,12 +265,12 @@ static void test_reftable_stack_transaction_api(void) struct reftable_stack *st = NULL; int err; struct reftable_addition *add = NULL; - + char head[] = "HEAD", master[] = "master"; struct reftable_ref_record ref = { - .refname = "HEAD", + .refname = head, .update_index = 1, .value_type = REFTABLE_REF_SYMREF, - .value.symref = "master", + .value.symref = master, }; struct reftable_ref_record dest = { NULL }; @@ -310,10 +313,11 @@ static void test_reftable_stack_transaction_api_performs_auto_compaction(void) EXPECT_ERR(err); for (i = 0; i <= n; i++) { + char master[] = "master"; struct reftable_ref_record ref = { .update_index = reftable_stack_next_update_index(st), .value_type = REFTABLE_REF_SYMREF, - .value.symref = "master", + .value.symref = master, }; char name[100]; @@ -355,8 +359,9 @@ static void test_reftable_stack_transaction_api_performs_auto_compaction(void) static void test_reftable_stack_auto_compaction_fails_gracefully(void) { + char master[] = "refs/meads/master"; struct reftable_ref_record ref = { - .refname = "refs/heads/master", + .refname = master, .update_index = 1, .value_type = REFTABLE_REF_VAL1, .value.val1 = {0x01}, @@ -404,21 +409,21 @@ static int write_error(struct reftable_writer *wr, void *arg) static void test_reftable_stack_update_index_check(void) { char *dir = get_tmp_dir(__LINE__); - struct reftable_write_options cfg = { 0 }; struct reftable_stack *st = NULL; int err; + char name1[] = "name1", name2[] = "name2", master[] = "master"; struct reftable_ref_record ref1 = { - .refname = "name1", + .refname = name1, .update_index = 1, .value_type = REFTABLE_REF_SYMREF, - .value.symref = "master", + .value.symref = master, }; struct reftable_ref_record ref2 = { - .refname = "name2", + .refname = name2, .update_index = 1, .value_type = REFTABLE_REF_SYMREF, - .value.symref = "master", + .value.symref = master, }; err = reftable_new_stack(&st, dir, cfg); @@ -560,8 +565,12 @@ static void test_reftable_stack_log_normalize(void) }; struct reftable_stack *st = NULL; char *dir = get_tmp_dir(__LINE__); + char branch[] = "branch"; + char onetwomessage[] = "one\ntwo"; + char onemessage[] = "one"; + char twomessage[] = "two\n"; struct reftable_log_record input = { - .refname = "branch", + .refname = branch, .update_index = 1, .value_type = REFTABLE_LOG_UPDATE, .value = { @@ -582,11 +591,11 @@ static void test_reftable_stack_log_normalize(void) err = reftable_new_stack(&st, dir, cfg); EXPECT_ERR(err); - input.value.update.message = "one\ntwo"; + input.value.update.message = onetwomessage; err = reftable_stack_add(st, &write_test_log, &arg); EXPECT(err == REFTABLE_API_ERROR); - input.value.update.message = "one"; + input.value.update.message = onemessage; err = reftable_stack_add(st, &write_test_log, &arg); EXPECT_ERR(err); @@ -594,7 +603,7 @@ static void test_reftable_stack_log_normalize(void) EXPECT_ERR(err); EXPECT(0 == strcmp(dest.value.update.message, "one\n")); - input.value.update.message = "two\n"; + input.value.update.message = twomessage; arg.update_index = 2; err = reftable_stack_add(st, &write_test_log, &arg); EXPECT_ERR(err); @@ -691,15 +700,14 @@ static void test_reftable_stack_tombstone(void) static void test_reftable_stack_hash_id(void) { char *dir = get_tmp_dir(__LINE__); - struct reftable_write_options cfg = { 0 }; struct reftable_stack *st = NULL; int err; - + char master[] = "master", target[] = "target"; struct reftable_ref_record ref = { - .refname = "master", + .refname = master, .value_type = REFTABLE_REF_SYMREF, - .value.symref = "target", + .value.symref = target, .update_index = 1, }; struct reftable_write_options cfg32 = { .hash_id = GIT_SHA256_FORMAT_ID }; @@ -874,12 +882,12 @@ static void test_reftable_stack_auto_compaction(void) EXPECT_ERR(err); for (i = 0; i < N; i++) { - char name[100]; + char name[100], master[] = "master"; struct reftable_ref_record ref = { .refname = name, .update_index = reftable_stack_next_update_index(st), .value_type = REFTABLE_REF_SYMREF, - .value.symref = "master", + .value.symref = master, }; snprintf(name, sizeof(name), "branch%04d", i); @@ -910,10 +918,11 @@ static void test_reftable_stack_add_performs_auto_compaction(void) EXPECT_ERR(err); for (i = 0; i <= n; i++) { + char master[] = "master"; struct reftable_ref_record ref = { .update_index = reftable_stack_next_update_index(st), .value_type = REFTABLE_REF_SYMREF, - .value.symref = "master", + .value.symref = master, }; /* @@ -959,12 +968,12 @@ static void test_reftable_stack_compaction_concurrent(void) EXPECT_ERR(err); for (i = 0; i < N; i++) { - char name[100]; + char name[100], master[] = "master"; struct reftable_ref_record ref = { .refname = name, .update_index = reftable_stack_next_update_index(st1), .value_type = REFTABLE_REF_SYMREF, - .value.symref = "master", + .value.symref = master, }; snprintf(name, sizeof(name), "branch%04d", i); @@ -1009,12 +1018,12 @@ static void test_reftable_stack_compaction_concurrent_clean(void) EXPECT_ERR(err); for (i = 0; i < N; i++) { - char name[100]; + char name[100], master[] = "master"; struct reftable_ref_record ref = { .refname = name, .update_index = reftable_stack_next_update_index(st1), .value_type = REFTABLE_REF_SYMREF, - .value.symref = "master", + .value.symref = master, }; snprintf(name, sizeof(name), "branch%04d", i);