Philippe Mathieu-Daudé <[email protected]> writes:
> The DEVICE() macro is defined as:
>
> #define DEVICE(obj) OBJECT_CHECK(DeviceState, (obj), TYPE_DEVICE)
>
> Remove unnecessary DEVICE() casts.
>
> Patch created mechanically using spatch with this script:
>
> @@
> typedef DeviceState;
> DeviceState *s;
> @@
> - DEVICE(s)
> + s
>
> Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
DEVICE(obj) expands to
OBJECT_CHECK(DeviceState, (obj), TYPE_DEVICE)
and then to
((DeviceState *)object_dynamic_cast_assert((Object *)(obj), (name),
__FILE__, __LINE__, __func__))
object_dynamic_cast_assert() asserts @obj can be safely converted to the
type named by @name, and returns @obj.
Your patch drops the assertion.
The assertion can only fail when @obj points to something other than its
stated type, i.e. when we're in undefined behavior country.
Preferably with this argument worked into your commit message:
Reviewed-by: Markus Armbruster <[email protected]>
There are many similar macros. Should they get the same treatment?