These declarations should generally be static const to avoid poor compilation and runtime performance where compilers tend to initialize the const declaration for every call instead of using .rodata for the string. Miscellanea: - Convert spaces to tabs for indentation in 2 adjacent checks
Showing the changes to scripts/checkpatch.pl (1 of 1 file). Show all
Unified · Split
| @@ -3890,14 +3890,23 @@ sub process { · 3889 unmodified lines | ||
| 3890 | 3890 | WARN("STATIC_CONST_CHAR_ARRAY", |
| 3891 | 3891 | "static const char * array should probably be static const char * const\n" . |
| 3892 | 3892 | $herecurr); |
| 3893 | − } | |
| 3893 | + } | |
| 3894 | + | |
| 3895 | +# check for initialized const char arrays that should be static const | |
| 3896 | + if ($line =~ /^\+\s*const\s+(char|unsigned\s+char|_*u8|(?:[us]_)?int8_t)\s+\w+\s*\[\s*(?:\w+\s*)?\]\s*=\s*"/) { | |
| 3897 | + if (WARN("STATIC_CONST_CHAR_ARRAY", | |
| 3898 | + "const array should probably be static const\n" . $herecurr) && | |
| 3899 | + $fix) { | |
| 3900 | + $fixed[$fixlinenr] =~ s/(^.\s*)const\b/${1}static const/; | |
| 3901 | + } | |
| 3902 | + } | |
| 3894 | 3903 | |
| 3895 | 3904 | # check for static char foo[] = "bar" declarations. |
| 3896 | 3905 | if ($line =~ /\bstatic\s+char\s+(\w+)\s*\[\s*\]\s*=\s*"/) { |
| 3897 | 3906 | WARN("STATIC_CONST_CHAR_ARRAY", |
| 3898 | 3907 | "static char array declaration should probably be static const char\n" . |
| 3899 | 3908 | $herecurr); |
| 3900 | − } | |
| 3909 | + } | |
| 3901 | 3910 | |
| 3902 | 3911 | # check for const <foo> const where <foo> is not a pointer or array type |
| 3903 | 3912 | if ($sline =~ /\bconst\s+($BasicType)\s+const\b/) { |