Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

checkpatch: warn on const char foo[] = "bar"; declarations

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

Link: http://lkml.kernel.org/r/10ea5f4b087dc911e41e187a4a2b5e79c7529aa3.camel@perches.com
Signed-off-by: Joe Perches <joe@perches.com>
Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Joe Perches and committed by
Linus Torvalds
77b8c0a8 05391772

+11 -2
+11 -2
scripts/checkpatch.pl
··· 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/) {