commit | 17642a2fbd2c1b12e6008dc7d56b23c08183d1f0 | [log] [tgz] |
---|---|---|
author | Gustavo A. R. Silva <gustavo@embeddedor.com> | Fri Oct 11 15:16:16 2019 -0500 |
committer | Gustavo A. R. Silva <gustavo@embeddedor.com> | Fri Oct 11 15:31:48 2019 -0500 |
tree | c4eec4a51cb8f048af5a227d60e16a556ab0496d | |
parent | da0c9ea146cbe92b832f1b0f694840ea8eb33cce [diff] |
treewide: Replace zero-length arrays with flexible array member The current codebase makes use of the zero-length array language extension to the C90 standard, but the preferred mechanism to declare variable-length types such as these ones is a flexible array member[1], introduced in C99: struct foo { int stuff; struct boo array[]; }; By making use of the mechanism above, we will get a compiler warning in case the flexible array does not occur last in the structure, which will help us prevent some kind of undefined behavior bugs from being unadvertenly introduced[2] to the codebase from now on. All these instances of code were found with the help of the following Coccinelle script: @@ identifier S, member, array; type T1, T2; @@ struct S { ... T1 member; T2 array[ - 0 ]; }; [1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html [2] commit 76497732932f ("cxgb3/l2t: Fix undefined behaviour") Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>