diff --git a/dynamic.c b/dynamic.c index c74bb92c04..b2ad6bb394 100644 --- a/dynamic.c +++ b/dynamic.c @@ -1609,7 +1609,16 @@ bool rarch_environment_cb(unsigned cmd, void *data) } case RETRO_ENVIRONMENT_SET_SERIALIZATION_QUIRKS: - core_set_serialization_quirks(*((uint32_t *) data)); + core_set_serialization_quirks(*((uint64_t *) data)); + + /* Zero any unrecognized quirks */ + *((uint64_t *) data) &= ~((uint64_t) + ((RETRO_SERIALIZATION_QUIRK_ARCHITECTURE_DEPENDENT-1) | + RETRO_SERIALIZATION_QUIRK_ARCHITECTURE_DEPENDENT)); + + /* And zero variable-sized serialization, which we don't support */ + *((uint64_t *) data) &= ~((uint64_t) RETRO_SERIALIZATION_QUIRK_VARIABLE_SIZE); + break; /* Default */ diff --git a/libretro-common/include/libretro.h b/libretro-common/include/libretro.h index e1a3c46e71..7f8e340aa5 100644 --- a/libretro-common/include/libretro.h +++ b/libretro-common/include/libretro.h @@ -997,7 +997,8 @@ struct retro_hw_render_context_negotiation_interface #define RETRO_ENVIRONMENT_SET_SERIALIZATION_QUIRKS 44 /* uint64_t * -- - * Sets quirk flags associated with serialization. + * Sets quirk flags associated with serialization. The frontend will zero any flags it doesn't + * recognize or support. */