in src/Tasks/Microsoft.NET.Build.Tasks/AppHost.cs [167:201]
private static unsafe void SearchAndReplace(
MemoryMappedViewAccessor accessor,
byte[] searchPattern,
byte[] patternToReplace,
string appHostSourcePath)
{
byte* pointer = null;
try
{
accessor.SafeMemoryMappedViewHandle.AcquirePointer(ref pointer);
byte* bytes = pointer + accessor.PointerOffset;
int position = KMPSearch(searchPattern, bytes, accessor.Capacity);
if (position < 0)
{
throw new BuildErrorException(Strings.AppHostHasBeenModified, appHostSourcePath, AppBinaryPathPlaceholder);
}
accessor.WriteArray(
position: position,
array: patternToReplace,
offset: 0,
count: patternToReplace.Length);
Pad0(searchPattern, patternToReplace, bytes, position);
}
finally
{
if (pointer != null)
{
accessor.SafeMemoryMappedViewHandle.ReleasePointer();
}
}
}