diff --git a/src/MeloNX/MeloNX/App/Core/Ryujinx/Ryujinx.swift b/src/MeloNX/MeloNX/App/Core/Ryujinx/Ryujinx.swift index 17bdd4bfe..4d4ac237a 100644 --- a/src/MeloNX/MeloNX/App/Core/Ryujinx/Ryujinx.swift +++ b/src/MeloNX/MeloNX/App/Core/Ryujinx/Ryujinx.swift @@ -227,8 +227,9 @@ class Ryujinx { let gameInfo = get_game_info(handle.fileDescriptor, extensionPtr) - let game = Game.convertGameInfoToGame(gameInfo: gameInfo, url: fileURLCandidate) - + guard let game = Game.convertGameInfoToGame(gameInfo: gameInfo, url: fileURLCandidate) + else { continue } + games.append(game) } catch { print(error) diff --git a/src/MeloNX/MeloNX/App/Models/Game.swift b/src/MeloNX/MeloNX/App/Models/Game.swift index d9ed10422..b3a66782c 100644 --- a/src/MeloNX/MeloNX/App/Models/Game.swift +++ b/src/MeloNX/MeloNX/App/Models/Game.swift @@ -22,10 +22,12 @@ public struct Game: Identifiable, Equatable, Hashable { var icon: UIImage? - static func convertGameInfoToGame(gameInfo: GameInfo, url: URL) -> Game { + static func convertGameInfoToGame(gameInfo: GameInfo, url: URL) -> Game? { + guard gameInfo.FileSize != 0 else { return nil } + var gameInfo = gameInfo var gameTemp = Game(containerFolder: url.deletingLastPathComponent(), fileType: .item, fileURL: url, titleName: "", titleId: "", developer: "", version: "") - + gameTemp.titleName = withUnsafePointer(to: &gameInfo.TitleName) { $0.withMemoryRebound(to: UInt8.self, capacity: MemoryLayout.size(ofValue: $0)) { String(cString: $0) diff --git a/src/Ryujinx.Headless.SDL2/Program.cs b/src/Ryujinx.Headless.SDL2/Program.cs index fca399c48..345814b01 100644 --- a/src/Ryujinx.Headless.SDL2/Program.cs +++ b/src/Ryujinx.Headless.SDL2/Program.cs @@ -321,6 +321,9 @@ namespace Ryujinx.Headless.SDL2 var stream = OpenFile(descriptor); var gameInfo = GetGameInfo(stream, extension); + if (gameInfo == null) { + return new GameInfoNative(0, "", "", "", "", new byte[0]); + } return new GameInfoNative( (ulong)gameInfo.FileSize,