From 2a34ef2566edfc2c06e246fc2392fa05cab0a064 Mon Sep 17 00:00:00 2001 From: Andrew Gould Date: Wed, 8 Apr 2020 09:49:19 +0100 Subject: [PATCH] Fix for blank line in comment tag and empty PRIV frame. --- src/Id3.Net/Id3/v2/Id3v23Handler.Frames.cs | 15 +++++++++++---- src/Id3.Net/Utils/TextEncodingHelper.cs | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/Id3.Net/Id3/v2/Id3v23Handler.Frames.cs b/src/Id3.Net/Id3/v2/Id3v23Handler.Frames.cs index f3f6df3..b2627bd 100644 --- a/src/Id3.Net/Id3/v2/Id3v23Handler.Frames.cs +++ b/src/Id3.Net/Id3/v2/Id3v23Handler.Frames.cs @@ -252,10 +252,17 @@ private static Id3Frame DecodePrivate(byte[] data) var frame = new PrivateFrame(); byte[] splitterSequence = TextEncodingHelper.GetSplitterBytes(Id3TextEncoding.Iso8859_1); byte[] ownerIdBytes = ByteArrayHelper.GetBytesUptoSequence(data, 0, splitterSequence); - frame.OwnerId = - TextEncodingHelper.GetString(ownerIdBytes, 0, ownerIdBytes.Length, Id3TextEncoding.Iso8859_1); - frame.Data = new byte[data.Length - ownerIdBytes.Length - splitterSequence.Length]; - Array.Copy(data, ownerIdBytes.Length + splitterSequence.Length, frame.Data, 0, frame.Data.Length); + if(ownerIdBytes != null) + { + frame.OwnerId = + TextEncodingHelper.GetString(ownerIdBytes, 0, ownerIdBytes.Length, Id3TextEncoding.Iso8859_1); + frame.Data = new byte[data.Length - ownerIdBytes.Length - splitterSequence.Length]; + Array.Copy(data, ownerIdBytes.Length + splitterSequence.Length, frame.Data, 0, frame.Data.Length); + } + else + { + frame.Data = new byte[0]; + } return frame; } diff --git a/src/Id3.Net/Utils/TextEncodingHelper.cs b/src/Id3.Net/Utils/TextEncodingHelper.cs index 5d3096f..1fc48f0 100644 --- a/src/Id3.Net/Utils/TextEncodingHelper.cs +++ b/src/Id3.Net/Utils/TextEncodingHelper.cs @@ -50,7 +50,7 @@ internal static string GetString(byte[] bytes, int start, int count, Id3TextEnco Encoding encoding = GetEncoding(encodingType); string str = encoding.GetString(bytes, start, count); - if (encodingType == Id3TextEncoding.Unicode) + if (str.Length > 0 && encodingType == Id3TextEncoding.Unicode) { if (str[0] == '\xFFFE' || str[0] == '\xFEFF') str = str.Remove(0, 1);