qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Eric Blake <eblake@redhat.com>
To: driver1998 <driver1998@foxmail.com>, qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH v2 2/4] qga: Fix an enum conversion warningin commands-win32.c, hit by clang.
Date: Thu, 2 May 2019 16:52:37 -0500	[thread overview]
Message-ID: <d23b59fa-2909-f124-3aab-cc5ded90f063@redhat.com> (raw)
In-Reply-To: <tencent_9962D5F9426BA267581CCB79DB1FE17AD508@qq.com>

[-- Attachment #1: Type: text/plain, Size: 2281 bytes --]

On 5/2/19 4:18 PM, driver1998 wrote:
> On 5/1/19 2:25 AM, Eric Blake wrote:
>> This adds lots of explicit casts. Are they actually necessary? Without
>> seeing the actual warning, it seems fishy to have to be this explicit.
> 
> So here are the warnings, on clang version 9.0.0 (trunk 351977).
> 
> qga/commands-win32.c:461:24: error: implicit conversion from enumeration type 'enum GuestDiskBusType' to different
>       enumeration type 'STORAGE_BUS_TYPE' (aka 'enum _STORAGE_BUS_TYPE') [-Werror,-Wenum-conversion]
>     [BusTypeUnknown] = GUEST_DISK_BUS_TYPE_UNKNOWN,
>                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~

> qga/commands-win32.c:486:12: error: implicit conversion from enumeration type 'STORAGE_BUS_TYPE'
>       (aka 'enum _STORAGE_BUS_TYPE') to different enumeration type 'GuestDiskBusType' (aka 'enum GuestDiskBusType')
>       [-Werror,-Wenum-conversion]
>     return win2qemu[(int)bus];
>     ~~~~~~ ^~~~~~~~~~~~~~~~~~

Where is enum STORAGE_BUS_TYPE defined? I see GuestDiskBusType (via
qga/qapi-schema.json's 'enum':'GuestDiskBusType'), but if
STORAGE_BUS_TYPE is a type declared by some external project, we are
probably better off writing a two-way conversion table or switch
statement, rather than relying on the two enums currently happening to
have identical values (but where that might break if we accidentally
rearrange our .json QAPI file or if the external file changes their
enum).  In fact, it looks like win2qemu[] is supposed to be that table,
but it was incorrectly written.  You WANT to do:

diff --git i/qga/commands-win32.c w/qga/commands-win32.c
index d40d61f605c..6b67f16faf1 100644
--- i/qga/commands-win32.c
+++ w/qga/commands-win32.c
@@ -457,7 +457,7 @@ void qmp_guest_file_flush(int64_t handle, Error **errp)

 #ifdef CONFIG_QGA_NTDDSCSI

-static STORAGE_BUS_TYPE win2qemu[] = {
+static GuestDiskBusType win2qemu[] = {
     [BusTypeUnknown] = GUEST_DISK_BUS_TYPE_UNKNOWN,
     [BusTypeScsi] = GUEST_DISK_BUS_TYPE_SCSI,
     [BusTypeAtapi] = GUEST_DISK_BUS_TYPE_IDE,

with no casts needed, either in the table or in the function that
references the table.

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

  parent reply	other threads:[~2019-05-02 21:52 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-02 21:18 [Qemu-devel] [PATCH v2 2/4] qga: Fix an enum conversion warningin commands-win32.c, hit by clang driver1998
2019-05-02 21:18 ` driver1998
2019-05-02 21:52 ` Eric Blake [this message]
2019-05-02 21:52   ` Eric Blake
2019-05-02 22:24   ` [Qemu-devel] [PATCH v2 2/4] qga: Fix an enum conversion warningincommands-win32.c, " GH Cao
2019-05-02 22:24     ` GH Cao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d23b59fa-2909-f124-3aab-cc5ded90f063@redhat.com \
    --to=eblake@redhat.com \
    --cc=driver1998@foxmail.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).