Fix to not pass StringBuilder by reference (out or ref) in P/Invoke (#9066)

Don't pass StringBuilder by reference (using out or ref). Otherwise, the CLR will expect the signature of this argument to be wchar_t ** instead of wchar_t *, and it won't be able to pin StringBuilder's internal buffer. Performance will be significantly degraded.
This commit is contained in:
Ilya
2019-03-13 17:03:23 -07:00
committed by Dongbo Wang
parent 78f4ba5ec1
commit 0f7efddd22
@@ -758,7 +758,7 @@ namespace Microsoft.PowerShell
bool result =
NativeMethods.ReadConsole(
consoleHandle.DangerousGetHandle(),
out buffer,
buffer,
(DWORD)charactersToRead,
out charsReadUnused,
ref control);
@@ -3022,7 +3022,7 @@ namespace Microsoft.PowerShell
internal static extern bool ReadConsole
(
NakedWin32Handle consoleInput,
out StringBuilder buffer,
StringBuilder buffer,
DWORD numberOfCharsToRead,
out DWORD numberOfCharsRead,
ref CONSOLE_READCONSOLE_CONTROL controlData