From 99ebeeb39bd4fdc3f134cfc6abba809d2f2b9b89 Mon Sep 17 00:00:00 2001 From: scuti Date: Tue, 17 Dec 2024 16:38:23 -0800 Subject: [PATCH] Skip playing audio of corrupted files. Prints a warning instead of crashing. Fixes #7150 (cherry picked from commit a81c38bab97c49a5bf40401fe01f1d7f42fc6c12) Signed-off-by: Itms --- .../public/gui/credits/texts/programming.json | 1 + source/soundmanager/data/ogg.cpp | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/binaries/data/mods/public/gui/credits/texts/programming.json b/binaries/data/mods/public/gui/credits/texts/programming.json index 5a5c264256..257d150a77 100644 --- a/binaries/data/mods/public/gui/credits/texts/programming.json +++ b/binaries/data/mods/public/gui/credits/texts/programming.json @@ -264,6 +264,7 @@ { "nick": "sbirmi", "name": "Sharad Birmiwal" }, { "nick": "sbte", "name": "Sven Baars" }, { "nick": "scroogie", "name": "André Gemünd" }, + { "nick": "scuti" }, { "nick": "scythetwirler", "name": "Casey X." }, { "nick": "sera", "name": "Ralph Sennhauser" }, { "nick": "Serihilda" }, diff --git a/source/soundmanager/data/ogg.cpp b/source/soundmanager/data/ogg.cpp index 19ad5b9f5e..6a0635b9cc 100644 --- a/source/soundmanager/data/ogg.cpp +++ b/source/soundmanager/data/ogg.cpp @@ -1,4 +1,4 @@ -/* Copyright (C) 2021 Wildfire Games. +/* Copyright (C) 2024 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -236,8 +236,18 @@ public: callbacks.seek_func = Adapter::Seek; callbacks.tell_func = Adapter::Tell; const int ret = ov_open_callbacks(&adapter, &vf, 0, 0, callbacks); - if(ret != 0) - WARN_RETURN(LibErrorFromVorbis(ret)); + switch (ret) + { + case 0: + break; + case OV_EBADHEADER: + case OV_EREAD: + case OV_ENOTVORBIS: + case OV_EVERSION: + return LibErrorFromVorbis(ret); + default: + WARN_RETURN(LibErrorFromVorbis(ret)); + } const int link = -1; // retrieve info for current bitstream info = ov_info(&vf, link);