### Godot version

v4.0.beta9.official [e780dc332]

### System information

macOS Ventura 13.0.1 (Intel), Radeon Pro 580 8 GB

### Issue description

When setting the size of a SubViewport (that is inside the corresponding SubViewportContainer) to zero, the editor crashes instantly.

**But it only happens when I set the size of the SubViewport by sliding the values.**

You can see what happens in this video:


https://user-images.githubusercontent.com/91340577/209363880-503d3dff-80e1-4e9e-bb57-d059fdbfeed0.mp4

At the end of the video you can see the crash message of macOS reading: _Godot quit unexpectedly._

If I write the number zero (or any negative) to the values of the SubViewport size, the crash doesn't happens.

### Steps to reproduce

1. Add a SubViewportContainer
2. Add a SubViewport as a child of the SubViewportContainer
3. Set the size of the SubViewport to zero **by sliding** the X or the Y value.

### Minimal reproduction project

1. Open the project
2. Go to the Control.tscn scene
3. Select the SubViewport node
4. Slide the X or Y values of the size to zero

[SubViewportCrash.zip](https://github.com/godotengine/godot/files/10296101/SubViewportCrash.zip)
ERR_FAIL_NULL(p_control);
	ERR_FAIL_COND(!Object::cast_to<Control>((Object *)p_control));
	ERR_FAIL_COND(p_control->is_inside_tree());
	ERR_FAIL_COND(p_control->get_parent() != nullptr);
	Control *drag_preview = _gui_get_drag_preview();
	if (drag_preview) {
		memdelete(drag_preview);
	}
	p_control->set_as_top_level(true);
	p_control->set_position(gui.last_mouse_pos);
	p_base->get_root_parent_control()->add_child(p_control); 
	p_control->move_to_front();
	gui.drag_preview_id = p_control->get_instance_id();
}
Control *Viewport::_gui_get_drag_preview() {
	if (gui.drag_preview_id.is_null()) {
		return nullptr;
	} else {
		Control *drag_preview = Object::cast_to<Control>(ObjectDB::get_instance(gui.drag_preview_id));
		if (!drag_preview) {
			ERR_PRINT("Don't free the control set as drag preview.");
			gui.drag_preview_id = ObjectID();
		}
		return drag_preview;
	}
}
void Viewport::_gui_remove_root_control(List<Control *>::Element *RI) {