diff --git a/frontends/libretro/src/lib.rs b/frontends/libretro/src/lib.rs
index a0f21ddaeb3336502fba32ce2d4a3af1105260ce..0026279fe2235e03f85a860762d3da4552101a22 100644
--- a/frontends/libretro/src/lib.rs
+++ b/frontends/libretro/src/lib.rs
@@ -403,7 +403,10 @@ pub extern "C" fn retro_unserialize(data: *const c_void, size: usize) -> bool {
     debugln!("retro_unserialize()");
     let instance = unsafe { EMULATOR.as_mut().unwrap() };
     let state = unsafe { from_raw_parts(data as *const u8, size) };
-    StateManager::load(state, instance).unwrap();
+    if let Err(err) = StateManager::load(state, instance) {
+        warnln!("Failed to load state: {}", err);
+        return false;
+    }
     true
 }