Why does normalizing a vector not work? Bug? [GetSafeNormal(), GetUnsafeNormal()]

This basically solved the problem, although I have no idea why the problem started in the first place… My location values aren’t out of the ordinary. Here’s the code i’m using that works.

bool ACrossStampede::StableNormalize2D(FVector& _v)
{
	const float size = _v.Size();
	if (size == 0.0f)
	{
		_v = FVector::ZeroVector;
	}
	else
	{
		_v = _v / size;		
		_v.Z = 0.0f;
	}

	return size == 0.0f;
}