summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDr. David von Oheimb <David.von.Oheimb@siemens.com>2021-04-29 09:41:30 +0200
committerDr. David von Oheimb <dev@ddvo.net>2021-05-20 16:29:13 +0200
commitd3fc80abfc71dbe6e74bdf2af09df328380096a8 (patch)
treedc8b4805073f8f030c9c1ee4713157ae371a0144
parentcheck-format.pl: Fix false positive "no SPC before binary '*'" for '!*' (diff)
downloadopenssl-d3fc80abfc71dbe6e74bdf2af09df328380096a8.tar.xz
openssl-d3fc80abfc71dbe6e74bdf2af09df328380096a8.zip
check-format.pl: Fix false positive on struct/union/enum in func return type
Reviewed-by: Paul Dale <pauli@openssl.org> (Merged from https://github.com/openssl/openssl/pull/15077)
-rw-r--r--util/check-format-test-negatives.c9
-rwxr-xr-xutil/check-format.pl10
2 files changed, 11 insertions, 8 deletions
diff --git a/util/check-format-test-negatives.c b/util/check-format-test-negatives.c
index 89b8b19c2e..c73cc04695 100644
--- a/util/check-format-test-negatives.c
+++ b/util/check-format-test-negatives.c
@@ -273,11 +273,12 @@ static varref cmp_vars[] = { /* comment. comment? comment! */
/* comment */ \
}
-/* 'struct' in function header */
-static int f(struct pem_pass_data *pass_data)
+union un var; /* struct/union/enum in variable type */
+struct provider_store_st *f() /* struct/union/enum in function return type */
+{
+}
+static void f(struct pem_pass_data *data) /* struct/union/enum in arg list */
{
- if (pass_data == NULL)
- return 0;
}
static void *fun(void)
diff --git a/util/check-format.pl b/util/check-format.pl
index 734022c540..882b38de41 100755
--- a/util/check-format.pl
+++ b/util/check-format.pl
@@ -929,10 +929,12 @@ while (<>) { # loop over all lines of all input files
}
# set $in_typedecl and potentially $hanging_offset for type declaration
- if (!$in_expr && @nested_indents == 0 && # not in expression
- m/(^|^.*\W)(typedef|struct|union|enum)(\W.*|$)$/ &&
- parens_balance($1) == 0) { # not in newly started expression
- # not needed: $keyword_opening_brace = $2 if $3 =~ m/\{/;
+ if (!$in_expr && @nested_indents == 0 # not in expression
+ && m/(^|^.*\W)(typedef|struct|union|enum)(\W.*|$)$/
+ && parens_balance($1) == 0 # not in newly started expression or function arg list
+ && ($2 eq "typedef" || !($3 =~ m/\s*\w++\s*(.)/ && $1 ne "{")) # 'struct'/'union'/'enum' <name> not followed by '{'
+ # not needed: && $keyword_opening_brace = $2 if $3 =~ m/\{/;
+ ) {
$in_typedecl++;
$hanging_offset += INDENT_LEVEL if m/\*.*\(/; # '*' followed by '(' - seems consistent with Emacs C mode
}