Fix: removing the last item from the free list should set the free list to NULL