Imported Upstream version 5.2.0.175

Former-commit-id: bb0468d0f257ff100aa895eb5fe583fb5dfbf900
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2017-06-07 13:16:24 +00:00
parent 4bdbaf4a88
commit 966bba02bb
8776 changed files with 346420 additions and 149650 deletions

View File

@ -7,7 +7,20 @@ namespace Mono {
internal static string PtrToUtf8String (IntPtr ptr)
{
unsafe {
return new String ((sbyte*)ptr);
if (ptr == IntPtr.Zero)
return string.Empty;
byte* bytes = (byte*)ptr;
int length = 0;
try {
while (bytes++ [0] != 0)
length++;
} catch (NullReferenceException) {
throw new ArgumentOutOfRangeException ("ptr", "Value does not refer to a valid string.");
}
return new String ((sbyte*)ptr, 0, length, System.Text.Encoding.UTF8);
}
}