Module Name: src Committed By: rillig Date: Sun Jan 7 12:43:16 UTC 2024
Modified Files: src/tests/usr.bin/xlint/lint1: d_c99_func.c src/usr.bin/xlint/lint1: tree.c Log Message: lint: fix crash for invalid __func__ (since 2023-01-29) To generate a diff of this commit: cvs rdiff -u -r1.6 -r1.7 src/tests/usr.bin/xlint/lint1/d_c99_func.c cvs rdiff -u -r1.590 -r1.591 src/usr.bin/xlint/lint1/tree.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/d_c99_func.c diff -u src/tests/usr.bin/xlint/lint1/d_c99_func.c:1.6 src/tests/usr.bin/xlint/lint1/d_c99_func.c:1.7 --- src/tests/usr.bin/xlint/lint1/d_c99_func.c:1.6 Tue Mar 28 14:44:34 2023 +++ src/tests/usr.bin/xlint/lint1/d_c99_func.c Sun Jan 7 12:43:16 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: d_c99_func.c,v 1.6 2023/03/28 14:44:34 rillig Exp $ */ +/* $NetBSD: d_c99_func.c,v 1.7 2024/01/07 12:43:16 rillig Exp $ */ # 3 "d_c99_func.c" /* C99 __func__ */ @@ -14,3 +14,10 @@ function_name(void) typedef int reveal_size[-(int)sizeof(__func__)]; return __func__; } + + +// Since tree.c 1.504 from 2023-01-29 and before tree.c 1.591 from 2024-01-07, +// lint crashed because there was no "current function", even though the "block +// level" was not 0. +/* expect+1: error: '__func__' undefined [99] */ +typedef int f(int[sizeof(__func__)]); Index: src/usr.bin/xlint/lint1/tree.c diff -u src/usr.bin/xlint/lint1/tree.c:1.590 src/usr.bin/xlint/lint1/tree.c:1.591 --- src/usr.bin/xlint/lint1/tree.c:1.590 Sun Jan 7 12:20:42 2024 +++ src/usr.bin/xlint/lint1/tree.c Sun Jan 7 12:43:16 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: tree.c,v 1.590 2024/01/07 12:20:42 rillig Exp $ */ +/* $NetBSD: tree.c,v 1.591 2024/01/07 12:43:16 rillig Exp $ */ /* * Copyright (c) 1994, 1995 Jochen Pohl @@ -37,7 +37,7 @@ #include <sys/cdefs.h> #if defined(__RCSID) -__RCSID("$NetBSD: tree.c,v 1.590 2024/01/07 12:20:42 rillig Exp $"); +__RCSID("$NetBSD: tree.c,v 1.591 2024/01/07 12:43:16 rillig Exp $"); #endif #include <float.h> @@ -409,7 +409,7 @@ fallback_symbol(sym_t *sym) return; } - if (block_level > 0 && strcmp(sym->s_name, "__func__") == 0) { + if (funcsym != NULL && strcmp(sym->s_name, "__func__") == 0) { if (!allow_c99) /* __func__ is a C99 feature */ warning(317);