From 27365dcb1895006c35b79a16b322562feb6176da Mon Sep 17 00:00:00 2001 From: trylock Date: Thu, 31 Jan 2019 23:02:54 +0100 Subject: [PATCH] Fix: correctly remove packet trailer --- XmpCore.Tests/XmpUtilsTests.cs | 17 ++++++++++++++++- XmpCore/Impl/XmpUtils.cs | 4 +++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/XmpCore.Tests/XmpUtilsTests.cs b/XmpCore.Tests/XmpUtilsTests.cs index 9442b32..0f264f0 100644 --- a/XmpCore.Tests/XmpUtilsTests.cs +++ b/XmpCore.Tests/XmpUtilsTests.cs @@ -1,4 +1,6 @@ -using Xunit; +using System.Text; +using XmpCore.Impl; +using Xunit; namespace XmpCore.Tests { @@ -31,5 +33,18 @@ public void ConvertToLong() Assert.Throws(() => XmpUtils.ConvertToLong(null)); Assert.Throws(() => XmpUtils.ConvertToLong("Foo")); } + + [Fact] + public void PackageEmptyXmpDataToJPEG() + { + IXmpMeta data = new XmpMeta(); + StringBuilder standard = new StringBuilder(); + StringBuilder extended = new StringBuilder(); + StringBuilder digest = new StringBuilder(); + + XmpUtils.PackageForJPEG(data, standard, extended, digest); + + Assert.Equal(0, extended.Length); + } } } \ No newline at end of file diff --git a/XmpCore/Impl/XmpUtils.cs b/XmpCore/Impl/XmpUtils.cs index a3b9b06..bc633ae 100644 --- a/XmpCore/Impl/XmpUtils.cs +++ b/XmpCore/Impl/XmpUtils.cs @@ -1477,7 +1477,9 @@ string ByteArrayToHexString(byte[] bytes) if (extraPadding > 2047) extraPadding = 2047; //stdStr.delete(stdStr.toString().indexOf(kPacketTrailer), stdStr.length()); - stdStr.Remove(stdStr.ToString().IndexOf(kPacketTrailer), stdStr.Length); + int index = stdStr.ToString().IndexOf(kPacketTrailer); + int length = stdStr.Length - index; + stdStr.Remove(index, length); stdStr.Append(' ', extraPadding);