]> Git Repo - qemu.git/commit
misc: Replace zero-length arrays with flexible array member (manual)
authorPhilippe Mathieu-Daudé <[email protected]>
Wed, 4 Mar 2020 15:38:16 +0000 (16:38 +0100)
committerPaolo Bonzini <[email protected]>
Mon, 16 Mar 2020 21:07:42 +0000 (22:07 +0100)
commit880a7817c1a82a93d3f83dfb25dce1f0db629c66
tree5907b2a58f0f58a3db7893ffa8e7e5e1808960f2
parentf7795e4096d8bd1c767c5ddb450fa859ff20490e
misc: Replace zero-length arrays with flexible array member (manual)

Description copied from Linux kernel commit from Gustavo A. R. Silva
(see [3]):

--v-- description start --v--

  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
  Linux codebase from now on.

--^-- description end --^--

Do the similar housekeeping in the QEMU codebase (which uses
C99 since commit 7be41675f7cb).

All these instances of code were found with the help of the
following command (then manual analysis, without modifying
structures only having a single flexible array member, such
QEDTable in block/qed.h):

  git grep -F '[0];'

[1] https://gcc.gnu.org/onlinedocs/gcc/Zero-Length.html
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=76497732932f
[3] https://git.kernel.org/pub/scm/linux/kernel/git/gustavoars/linux.git/commit/?id=17642a2fbd2c1

Inspired-by: Gustavo A. R. Silva <[email protected]>
Reviewed-by: David Hildenbrand <[email protected]>
Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
Signed-off-by: Paolo Bonzini <[email protected]>
block/vmdk.c
docs/interop/vhost-user.rst
hw/char/sclpconsole-lm.c
hw/char/sclpconsole.c
hw/s390x/virtio-ccw.c
include/hw/acpi/acpi-defs.h
include/hw/boards.h
include/hw/s390x/event-facility.h
include/hw/s390x/sclp.h
target/s390x/ioinst.c
This page took 0.029215 seconds and 4 git commands to generate.