From ce1d938b3a2caeb0174bee632ba6dc51fa7a87a6 Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Sat, 27 Jan 2018 16:09:02 -0800 Subject: [PATCH] Fix AdPlug decoder. --- Plugins/AdPlug/AdPlug/AdPlugDecoder.mm | 10 ++++++++-- Plugins/AdPlug/AdPlug/AdPlugMetadataReader.mm | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/Plugins/AdPlug/AdPlug/AdPlugDecoder.mm b/Plugins/AdPlug/AdPlug/AdPlugDecoder.mm index 0dba6893f..b50182306 100755 --- a/Plugins/AdPlug/AdPlug/AdPlugDecoder.mm +++ b/Plugins/AdPlug/AdPlug/AdPlugDecoder.mm @@ -33,9 +33,15 @@ [self setSource:s]; m_emu = new CNemuopl(44100); + + NSString * path = [[s url] absoluteString]; + NSRange fragmentRange = [path rangeOfString:@"#" options:NSBackwardsSearch]; + if (fragmentRange.location != NSNotFound) { + path = [path substringToIndex:fragmentRange.location]; + } - std::string path = [[[[source url] absoluteString] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding] UTF8String]; - m_player = CAdPlug::factory(path, m_emu, CAdPlug::players, CProvider_cog( path, source )); + std::string _path = [[path stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding] UTF8String]; + m_player = CAdPlug::factory(_path, m_emu, CAdPlug::players, CProvider_cog( _path, source )); if ( !m_player ) return 0; diff --git a/Plugins/AdPlug/AdPlug/AdPlugMetadataReader.mm b/Plugins/AdPlug/AdPlug/AdPlugMetadataReader.mm index b5d8bd89b..8bbe1aea8 100644 --- a/Plugins/AdPlug/AdPlug/AdPlugMetadataReader.mm +++ b/Plugins/AdPlug/AdPlug/AdPlugMetadataReader.mm @@ -46,8 +46,14 @@ Copl * p_emu = new CSilentopl; - std::string path = [[[url absoluteString] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding] UTF8String]; - CPlayer * p_player = CAdPlug::factory(path, p_emu, CAdPlug::players, CProvider_cog( path, source )); + NSString * path = [url absoluteString]; + NSRange fragmentRange = [path rangeOfString:@"#" options:NSBackwardsSearch]; + if (fragmentRange.location != NSNotFound) { + path = [path substringToIndex:fragmentRange.location]; + } + + std::string _path = [[path stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding] UTF8String]; + CPlayer * p_player = CAdPlug::factory(_path, p_emu, CAdPlug::players, CProvider_cog( _path, source )); if ( !p_player ) {