mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-04 23:50:27 +00:00
unifdef: Fix case where a multiline comment follows a directive.
Sponsored by: Klara, Inc.
Reviewed by: kevans
Differential Revision: https://reviews.freebsd.org/D41026
(cherry picked from commit a122c3c492
)
This commit is contained in:
parent
15991a6824
commit
0c9caeb869
|
@ -1,6 +1,7 @@
|
|||
|
||||
PACKAGE= tests
|
||||
|
||||
ATF_TESTS_SH= unifdef_test
|
||||
NETBSD_ATF_TESTS_SH= basic_test
|
||||
|
||||
${PACKAGE}FILES+= d_basic.in
|
||||
|
|
22
usr.bin/unifdef/tests/unifdef_test.sh
Normal file
22
usr.bin/unifdef/tests/unifdef_test.sh
Normal file
|
@ -0,0 +1,22 @@
|
|||
#
|
||||
# Copyright (c) 2023 Klara, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: BSD-2-Clause
|
||||
#
|
||||
|
||||
atf_test_case hash_comment
|
||||
hash_comment_head() {
|
||||
atf_set descr "multiline comment follows directive"
|
||||
}
|
||||
hash_comment_body() {
|
||||
cat >f <<EOF
|
||||
#if FOO
|
||||
#endif /*
|
||||
*/
|
||||
EOF
|
||||
atf_check -o file:f unifdef <f
|
||||
}
|
||||
|
||||
atf_init_test_cases() {
|
||||
atf_add_test_case hash_comment
|
||||
}
|
|
@ -886,8 +886,9 @@ parseline(void)
|
|||
retval = LT_ELIF;
|
||||
}
|
||||
/* the following can happen if the last line of the file lacks a
|
||||
newline or if there is too much whitespace in a directive */
|
||||
if (linestate == LS_HASH) {
|
||||
newline or if there is too much whitespace in a directive,
|
||||
or if a directive is followed by a multiline comment */
|
||||
if (linestate == LS_HASH && !incomment) {
|
||||
long len = cp - tline;
|
||||
if (fgets(tline + len, MAXLINE - len, input) == NULL) {
|
||||
if (ferror(input))
|
||||
|
|
Loading…
Reference in a new issue