You've already forked linux-packaging-mono
Imported Upstream version 4.8.0.309
Former-commit-id: 5f9c6ae75f295e057a7d2971f3a6df4656fa8850
This commit is contained in:
parent
ee1447783b
commit
94b2861243
@@ -1107,25 +1107,21 @@ namespace System.Runtime.InteropServices
|
||||
{
|
||||
if (s == null)
|
||||
throw new ArgumentNullException ("s");
|
||||
int len = s.Length;
|
||||
IntPtr ctm = AllocCoTaskMem ((len+1) * 2 + 4);
|
||||
byte [] buffer = null;
|
||||
WriteInt32 (ctm, 0, len*2);
|
||||
try {
|
||||
buffer = s.GetBuffer ();
|
||||
|
||||
for (int i = 0; i < len; i++)
|
||||
WriteInt16 (ctm, 4 + (i * 2), (short) ((buffer [(i*2)] << 8) | (buffer [i*2+1])));
|
||||
WriteInt16 (ctm, 4 + buffer.Length, 0);
|
||||
} finally {
|
||||
if (buffer != null)
|
||||
for (int i = buffer.Length; i > 0; ){
|
||||
i--;
|
||||
buffer [i] = 0;
|
||||
}
|
||||
byte[] buffer = s.GetBuffer ();
|
||||
int len = s.Length;
|
||||
|
||||
// SecureString doesn't take endian-ness into account.
|
||||
// Therefore swap bytes here before we send it to c-side if little-endian.
|
||||
if (BitConverter.IsLittleEndian) {
|
||||
for (int i = 0; i < buffer.Length; i += 2) {
|
||||
byte b = buffer[i];
|
||||
buffer[i] = buffer[i + 1];
|
||||
buffer[i + 1] = b;
|
||||
}
|
||||
}
|
||||
return (IntPtr) ((long)ctm + 4);
|
||||
}
|
||||
return BufferToBSTR (buffer, len);
|
||||
}
|
||||
|
||||
public static IntPtr SecureStringToCoTaskMemAnsi (SecureString s)
|
||||
{
|
||||
@@ -1212,6 +1208,10 @@ namespace System.Runtime.InteropServices
|
||||
throw ex;
|
||||
}
|
||||
|
||||
|
||||
[MethodImplAttribute(MethodImplOptions.InternalCall)]
|
||||
public extern static IntPtr BufferToBSTR (Array ptr, int slen);
|
||||
|
||||
[MethodImplAttribute(MethodImplOptions.InternalCall)]
|
||||
public extern static IntPtr UnsafeAddrOfPinnedArrayElement (Array arr, int index);
|
||||
|
||||
|
@@ -122,7 +122,7 @@ namespace System.Runtime.InteropServices
|
||||
old_state = _state;
|
||||
|
||||
if ((old_state & (int) State.Closed) != 0)
|
||||
throw new ObjectDisposedException ("handle");
|
||||
throw new ObjectDisposedException (null, "Safe handle has been closed");
|
||||
|
||||
new_state = old_state + RefCount_One;
|
||||
} while (Interlocked.CompareExchange (ref _state, new_state, old_state) != old_state);
|
||||
@@ -198,7 +198,7 @@ namespace System.Runtime.InteropServices
|
||||
* hitting zero though -- that can happen if SetHandleAsInvalid is
|
||||
* used). */
|
||||
if ((old_state & RefCount_Mask) == 0)
|
||||
throw new ObjectDisposedException ("handle");
|
||||
throw new ObjectDisposedException (null, "Safe handle has been closed");
|
||||
|
||||
if ((old_state & RefCount_Mask) != RefCount_One)
|
||||
perform_release = false;
|
||||
|
@@ -87,7 +87,7 @@ namespace System.Runtime.InteropServices
|
||||
|
||||
string Location { get; }
|
||||
|
||||
#if !NET_2_1
|
||||
#if !MOBILE
|
||||
Evidence Evidence { get; }
|
||||
#endif
|
||||
|
||||
@@ -129,7 +129,7 @@ namespace System.Runtime.InteropServices
|
||||
|
||||
AssemblyName[] GetReferencedAssemblies ();
|
||||
|
||||
#if !NET_2_1
|
||||
#if !MOBILE
|
||||
bool GlobalAssemblyCache { get; }
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user