/// Use ARRAY_SIZE instead of dividing sizeof array with sizeof an element /// //# This makes an effort to find cases where ARRAY_SIZE can be used such as //# where there is a division of sizeof the array by the sizeof its first //# element or by any indexed element or the element type. It replaces the //# division of the two sizeofs by ARRAY_SIZE. // // Confidence: High // Copyright: (C) 2014 Himangi Saraogi. GPLv2. // Comments: // Options: --no-includes --include-headers virtual patch virtual context virtual org virtual report @i@ @@ #include <linux/kernel.h> //---------------------------------------------------------- // For context mode //---------------------------------------------------------- @depends on i&&context@ type T; T[] E; @@ ( * (sizeof(E)/sizeof(*E)) | * (sizeof(E)/sizeof(E[...])) | * (sizeof(E)/sizeof(T)) ) //---------------------------------------------------------- // For patch mode //---------------------------------------------------------- @depends on i&&patch@ type T; T[] E; @@ ( - (sizeof(E)/sizeof(*E)) + ARRAY_SIZE(E) | - (sizeof(E)/sizeof(E[...])) + ARRAY_SIZE(E) | - (sizeof(E)/sizeof(T)) + ARRAY_SIZE(E) ) //---------------------------------------------------------- // For org and report mode //---------------------------------------------------------- @r depends on (org || report)@ type T; T[] E; position p; @@ ( (sizeof(E)@p /sizeof(*E)) | (sizeof(E)@p /sizeof(E[...])) | (sizeof(E)@p /sizeof(T)) ) @script:python depends on i&&org@ p << r.p; @@ coccilib.org.print_todo(p[0], "WARNING should use ARRAY_SIZE") @script:python depends on i&&report@ p << r.p; @@ msg="WARNING: Use ARRAY_SIZE" coccilib.report.print_report(p[0], msg) </a><a class='active' href='/cgit.cgi/linux/net-next.git/log/sound/pci/echoaudio/darla20.c?h=nds-private-remove'>log</a><a href='/cgit.cgi/linux/net-next.git/tree/sound/pci/echoaudio/darla20.c?h=nds-private-remove&id=3d67576da15167b2669e4765ca9e383f6bcb4171'>tree</a><a href='/cgit.cgi/linux/net-next.git/commit/sound/pci/echoaudio/darla20.c?h=nds-private-remove&id=3d67576da15167b2669e4765ca9e383f6bcb4171'>commit</a><a href='/cgit.cgi/linux/net-next.git/diff/sound/pci/echoaudio/darla20.c?h=nds-private-remove&id=3d67576da15167b2669e4765ca9e383f6bcb4171'>diff</a></td><td class='form'><form class='right' method='get' action='/cgit.cgi/linux/net-next.git/log/sound/pci/echoaudio/darla20.c'> <input type='hidden' name='h' value='nds-private-remove'/><input type='hidden' name='id' value='3d67576da15167b2669e4765ca9e383f6bcb4171'/><select name='qt'> <option value='grep'>log msg</option> <option value='author'>author</option> <option value='committer'>committer</option> <option value='range'>range</option> </select> <input class='txt' type='search' size='10' name='q' value=''/> <input type='submit' value='search'/> </form> </td></tr></table> <div class='path'>path: <a href='/cgit.cgi/linux/net-next.git/log/?h=nds-private-remove&id=3d67576da15167b2669e4765ca9e383f6bcb4171'>root</a>/<a href='/cgit.cgi/linux/net-next.git/log/sound?h=nds-private-remove&id=3d67576da15167b2669e4765ca9e383f6bcb4171'>sound</a>/<a href='/cgit.cgi/linux/net-next.git/log/sound/pci?h=nds-private-remove&id=3d67576da15167b2669e4765ca9e383f6bcb4171'>pci</a>/<a href='/cgit.cgi/linux/net-next.git/log/sound/pci/echoaudio?h=nds-private-remove&id=3d67576da15167b2669e4765ca9e383f6bcb4171'>echoaudio</a>/<a href='/cgit.cgi/linux/net-next.git/log/sound/pci/echoaudio/darla20.c?h=nds-private-remove&id=3d67576da15167b2669e4765ca9e383f6bcb4171'>darla20.c</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th class='left'>Age</th><th class='left'>Commit message (<a href='/cgit.cgi/linux/net-next.git/log/sound/pci/echoaudio/darla20.c?h=nds-private-remove&id=3d67576da15167b2669e4765ca9e383f6bcb4171&showmsg=1'>Expand</a>)</th><th class='left'>Author</th><th class='left'>Files</th><th class='left'>Lines</th></tr>