in src/cs/Microsoft.PhoneticMatching/NativeResourceWrapper.cs [83:116]
protected static StringBuilder CallNative(Func<StringBuilder, NativeResult> nativeFunc)
{
ManagedCallback.LastError = null;
StringBuilder buffer = new StringBuilder(NativeResourceWrapper.BufferSize);
var result = nativeFunc(buffer);
if (result == NativeResult.BufferTooSmall)
{
if (NativeResourceWrapper.BufferSize > MaximumBufferSize)
{
throw new InsufficientMemoryException(string.Format("Native library requires a buffer of {0} characters. Maximum capacity is {1}.", NativeResourceWrapper.BufferSize, MaximumBufferSize));
}
buffer.Capacity = NativeResourceWrapper.BufferSize;
result = nativeFunc(buffer);
}
if (ManagedCallback.LastError != null)
{
throw ManagedCallback.LastError;
}
if (result != NativeResult.Success)
{
if (result == NativeResult.InvalidParameter)
{
throw new ArgumentException(buffer.ToString());
}
throw new Exception(string.Format("Unhandled exception in native code: {0}", buffer));
}
return buffer;
}