Module Name:    src
Committed By:   rillig
Date:           Sat Apr 15 10:53:59 UTC 2023

Modified Files:
        src/tests/usr.bin/xlint/lint1: msg_302.c

Log Message:
tests/lint: extend test for returning local address


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/tests/usr.bin/xlint/lint1/msg_302.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/tests/usr.bin/xlint/lint1/msg_302.c
diff -u src/tests/usr.bin/xlint/lint1/msg_302.c:1.4 src/tests/usr.bin/xlint/lint1/msg_302.c:1.5
--- src/tests/usr.bin/xlint/lint1/msg_302.c:1.4	Wed Jun 22 19:23:18 2022
+++ src/tests/usr.bin/xlint/lint1/msg_302.c	Sat Apr 15 10:53:59 2023
@@ -1,4 +1,4 @@
-/*	$NetBSD: msg_302.c,v 1.4 2022/06/22 19:23:18 rillig Exp $	*/
+/*	$NetBSD: msg_302.c,v 1.5 2023/04/15 10:53:59 rillig Exp $	*/
 # 3 "msg_302.c"
 
 // Test for message: '%s' returns pointer to automatic object [302]
@@ -19,17 +19,32 @@ return_local(void)
 }
 
 void *
-return_local_array(_Bool cond)
+return_local_array(int x)
 {
-	int local[5];
-	int *p = local;
+	int local[5], *indirect = local;
 
-	/* XXX: lint doesn't track this indirection, but Clang-tidy does. */
-	if (cond)
-		return p;
-
-	/* expect+1: warning: 'return_local_array' returns pointer to automatic object [302] */
-	return local + 5;
+	switch (x) {
+	case 0:
+		/* expect+1: warning: 'return_local_array' returns pointer to automatic object [302] */
+		return local;
+	case 1:
+		/* expect+1: warning: 'return_local_array' returns pointer to automatic object [302] */
+		return &local[3];
+	case 2:
+		/* expect+1: warning: 'return_local_array' returns pointer to automatic object [302] */
+		return 5 + local;
+	case 3:
+		/* expect+1: warning: 'return_local_array' returns pointer to automatic object [302] */
+		return local + 5;
+	case 4:
+		/* XXX: lint only checks '+' but not '-'. */
+		return local - -3;
+	case 5:
+		/* XXX: lint doesn't track this indirection, but Clang-tidy does. */
+		return indirect;
+	default:
+		return "OK";
+	}
 }
 
 void *

Reply via email to