TArray.RemoveAt(0, -X, false) results in corrupt memory

If calling TArray.RemoveAt(0, X < 0, false);

It will corrupt the memory. The 2nd parameter is checked for >=0 but they way it is done, fails and so it corrupts the memory entirely.

	void RemoveAt(int32 Index, int32 Count = 1, bool bAllowShrinking = true)
		if (Count)
			checkSlow((Count >= 0) & (Index >= 0) & (Index + Count <= ArrayNum));

‘checkSlow’ fails when Count < 0, also If (Count) returns true if count is negative!

As you say, checkSlow() fails (asserts) when Count is negative, as it is nonsensical to call TArray::Remove() with a negative count.

This is intended behaviour. What is the problem you are having?