On Sun, Aug 21, 2022 at 11:08:43PM +0100, Chris Down wrote:
> I originally sent these a few years ago and the reply was that
> const-correctness wasn't something cared about, but seeing other const
> changes in dwm, and purely const-correctness improvements in
> quark/st/libgrapheme, I figured maybe it's worth reevaluating and seeing
> if they are of interest now.

I would add the attached patch to the list as well.

String literals in C are of the type `char []`, however modifying them
is actually UB [0] and in practice it can even result in a segfault.

The `-Wwrite-strings` flag treats string literals as `const char []` and
thus warns about cases where a string literal gets assigned to a `char *`.

P.S: I didn't add the flag to config.mk/CFLAGS in the patch since
changing the default warning flags can be seen as an opinionated change.

[0]: https://port70.net/~nsz/c/c99/n1256.html#6.4.5p6

- NRK
>From 49148ee9fb0bba0e1e503f70016381a779672b36 Mon Sep 17 00:00:00 2001
From: NRK <[email protected]>
Date: Mon, 22 Aug 2022 13:56:09 +0600
Subject: [PATCH] fix const-correctness reguarding string literals

String literals in C are of the type `char []`, however modifying them
is actually UB [0] and in practice it can even result in a segfault.

The `-Wwrite-strings` flag treats string literals as `const char []` and
thus warns about cases where a string literal gets assigned to a `char *`.

[0]: https://port70.net/~nsz/c/c99/n1256.html#6.4.5p6
---
 dwm.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/dwm.c b/dwm.c
index 253aba7..55dd68c 100644
--- a/dwm.c
+++ b/dwm.c
@@ -1808,7 +1808,8 @@ updatebars(void)
 		.background_pixmap = ParentRelative,
 		.event_mask = ButtonPressMask|ExposureMask
 	};
-	XClassHint ch = {"dwm", "dwm"};
+	char s[] = "dwm";
+	XClassHint ch = { s, s };
 	for (m = mons; m; m = m->next) {
 		if (m->barwin)
 			continue;
-- 
2.35.1

Reply via email to