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

@@ -8,6 +8,9 @@ using System;
using System.IO;
using System.Runtime.InteropServices;
using Mono.Unix.Native;
#if MONODROID
using Mono.Unix.Android;
#endif
namespace Mono.Unix.Native {
@@ -17,7 +20,17 @@ namespace Mono.Unix.Native {
//
// Non-generated exports
//
#if !MONODROID
#if MONODROID
[DllImport (LIB, EntryPoint="Mono_Posix_FromRealTimeSignum")]
static extern int HelperFromRealTimeSignum (Int32 offset, out Int32 rval);
static int FromRealTimeSignum (Int32 offset, out Int32 rval)
{
if (!AndroidUtils.AreRealTimeSignalsSafe ())
throw new PlatformNotSupportedException ("Real-time signals are not supported on this Android architecture");
return HelperFromRealTimeSignum (offset, out rval);
}
#else
[DllImport (LIB, EntryPoint="Mono_Posix_FromRealTimeSignum")]
private static extern int FromRealTimeSignum (Int32 offset, out Int32 rval);
#endif

View File

@@ -426,14 +426,20 @@ namespace Mono.Unix.Native {
public static Errno GetLastError ()
{
// Always call Marshal.GetLastWin32Error() before the OS check,
// even on Windows where we don't use the return value. If we do
// the OS check first Environment.OSVersion (if it happens to be
// the first ever access) will clobber Marshal.GetLastWin32Error()
// and we won't get the desired errno value on non-Windows platforms.
int errno = Marshal.GetLastWin32Error ();
if (Environment.OSVersion.Platform != PlatformID.Unix) {
// On Windows Marshal.GetLastWin32Error() doesn't take errno
// into account so we need to call Mono_Posix_Stdlib_GetLastError()
// which returns the value of errno in the C runtime
// libMonoPosixHelper.dll was linked against.
return (Errno) _GetLastError ();
errno = _GetLastError ();
}
return NativeConvert.ToErrno (Marshal.GetLastWin32Error ());
return NativeConvert.ToErrno (errno);
}
[DllImport (MPH, CallingConvention=CallingConvention.Cdecl,