LINUX.ORG.RU

История изменений

Исправление safocl, (текущая версия) :

так это UB.
ирония в том, что исправление тривиально простое, а также что все, кроме самого поля type можно использовать для определения type...

if (event.type == SDL_EVENT_MOUSE_MOTION)
    auto i = event.motion.x;

тут ub либо на первой, либо на второй строке — поскольку это разные мемберы, и один из них не является активным.

но если сделать
struct GenericEvent{
    Uint32 type;
};
typedef union SDL_Event
{
    GenericEvent generic;            /**< Event type, shared with all events */
    SDL_MouseMotionEvent motion;
    SDL_MouseButtonEvent button;
    SDL_QuitEvent quit;              /**< Quit request event data */
} SDL_Event;

то через
if (event.generic.type == SDL_EVENT_MOUSE_MOTION)
    auto i = event.motion.x;

всё будет ок. (без UB)

Исправление safocl, :

так это UB.
ирония в том, что исправление тривиально простое, а также что все, кроме самого поля type можно использовать для определения type...

if (event.type == SDL_EVENT_MOUSE_MOTION)
    auto i = event.motion.x;

тут ub либо на первой, либо на второй строке — поскольку это разные мемберы, и один из них не является активным.

Исходная версия safocl, :

так это UB.
ирония в том, что исправление тривиально простое, а также что все, кроме самого поля type можно использовать для определения type...