From 61b75c82ce6b5b1bb709fb37fc66e7e26750559f Mon Sep 17 00:00:00 2001 From: cvium Date: Wed, 17 Nov 2021 14:49:30 +0100 Subject: [PATCH] Read past empty elements --- .../MusicBrainz/MusicBrainzAlbumProvider.cs | 28 +++++++++++++++---- .../Parsers/BaseNfoParser.cs | 8 +++++- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzAlbumProvider.cs b/MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzAlbumProvider.cs index 5559b9db6a..8a32cb07ce 100644 --- a/MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzAlbumProvider.cs +++ b/MediaBrowser.Providers/Plugins/MusicBrainz/MusicBrainzAlbumProvider.cs @@ -319,6 +319,12 @@ namespace MediaBrowser.Providers.Music { case "name-credit": { + if (reader.IsEmptyElement) + { + reader.Read(); + break; + } + using var subReader = reader.ReadSubtree(); return ParseArtistNameCredit(subReader); } @@ -355,6 +361,12 @@ namespace MediaBrowser.Providers.Music { case "artist": { + if (reader.IsEmptyElement) + { + reader.Read(); + break; + } + var id = reader.GetAttribute("id"); using var subReader = reader.ReadSubtree(); return ParseArtistArtistCredit(subReader, id); @@ -457,8 +469,8 @@ namespace MediaBrowser.Providers.Music }; using var reader = XmlReader.Create(oReader, settings); - reader.MoveToContent(); - reader.Read(); + await reader.MoveToContentAsync().ConfigureAwait(false); + await reader.ReadAsync().ConfigureAwait(false); // Loop through each element while (!reader.EOF && reader.ReadState == ReadState.Interactive) @@ -471,7 +483,7 @@ namespace MediaBrowser.Providers.Music { if (reader.IsEmptyElement) { - reader.Read(); + await reader.ReadAsync().ConfigureAwait(false); continue; } @@ -481,14 +493,14 @@ namespace MediaBrowser.Providers.Music default: { - reader.Skip(); + await reader.SkipAsync().ConfigureAwait(false); break; } } } else { - reader.Read(); + await reader.ReadAsync().ConfigureAwait(false); } } @@ -755,6 +767,12 @@ namespace MediaBrowser.Providers.Music case "artist-credit": { + if (reader.IsEmptyElement) + { + reader.Read(); + break; + } + using var subReader = reader.ReadSubtree(); var artist = ParseArtistCredit(subReader); diff --git a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs index 5ce22da6a8..bcf9a83661 100644 --- a/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs +++ b/MediaBrowser.XbmcMetadata/Parsers/BaseNfoParser.cs @@ -784,7 +784,13 @@ namespace MediaBrowser.XbmcMetadata.Parsers case "fanart": { - var subtree = reader.ReadSubtree(); + if (reader.IsEmptyElement) + { + reader.Read(); + break; + } + + using var subtree = reader.ReadSubtree(); if (!subtree.ReadToDescendant("thumb")) { break;