On Tue, Jun 24, 2025 at 14:27:58 +0200, Michal Privoznik via Devel wrote:
> From: Michal Privoznik <mpriv...@redhat.com>
> 
> Inside of qemuMonitorJSONGetBlockInfo() there's a for loop in
> which a variable of struct qemuDomainDiskInfo type is declared
> and initialized as { false }. This works only because stdbool.h
> declares 'false' as a macro, so preprocessor expands initializer
> to proper form of { 0 }.

Could you please elaborate what's wrong here?

The struct is declared as:

struct qemuDomainDiskInfo {
    bool removable;
    bool tray;
    bool tray_open;
    bool empty;
    int io_status;
    char *nodename;
};

> 
> Signed-off-by: Michal Privoznik <mpriv...@redhat.com>
> ---
>  src/qemu/qemu_monitor_json.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
> index a6fb2a2013..2de68d6518 100644
> --- a/src/qemu/qemu_monitor_json.c
> +++ b/src/qemu/qemu_monitor_json.c
> @@ -2206,7 +2206,7 @@ int qemuMonitorJSONGetBlockInfo(qemuMonitor *mon,
>      for (i = 0; i < virJSONValueArraySize(devices); i++) {
>          virJSONValue *dev;
>          virJSONValue *image;
> -        struct qemuDomainDiskInfo info = { false };

Thus this defines 'info' as 'struct qemuDomainDiskInfo' and initializes
the 'removable' (first member) to 'false'. The rest is then
empty-initialized.

> +        struct qemuDomainDiskInfo info = { 0 };
>          const char *thisdev;
>          const char *status;
>          const char *qdev;
> -- 
> 2.49.0
> 

Reply via email to