diff --git a/src/libraries/System.Private.Uri/src/System/UriExt.cs b/src/libraries/System.Private.Uri/src/System/UriExt.cs index 72c266d0487c16..a644dfa566699a 100644 --- a/src/libraries/System.Private.Uri/src/System/UriExt.cs +++ b/src/libraries/System.Private.Uri/src/System/UriExt.cs @@ -744,11 +744,9 @@ private unsafe string GetRelativeSerializationString(UriFormat format) if (_string.Length == 0) return string.Empty; - char[] dest = new char[_string.Length]; - int position = 0; - dest = UriHelper.UnescapeString(_string, 0, _string.Length, dest, ref position, c_DummyChar, - c_DummyChar, c_DummyChar, UnescapeMode.EscapeUnescape, null, false); - return new string(dest, 0, position); + var vsb = new ValueStringBuilder(stackalloc char[StackallocThreshold]); + UriHelper.UnescapeString(_string, ref vsb, c_DummyChar, c_DummyChar, c_DummyChar, UnescapeMode.EscapeUnescape, null, false); + return vsb.ToString(); } else {