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 *