### Godot version

63f95c0e58e51ec2939e8b47803cb607fb35cadc

### System information

Windows 11

### Issue description

Using the following code:

```gdscript
extends StaticBody3D

@onready var shape_3d = $CollisionShape3D

func _ready():
	var convex_shape = ConvexPolygonShape3D.new()
	var points = PackedVector3Array()
	
	points.append(Vector3(0, 0, 0))
	points.append(Vector3(1, 0, 0))
	points.append(Vector3(0, 0, 1))
	points.append(Vector3(1, 0, 1))
	
	convex_shape.points = points
	shape_3d.shape = convex_shape
```

produces the correct result:

![image](https://user-images.githubusercontent.com/3036176/208936364-ae651b87-4be9-4fe0-8e5a-4cf17d937348.png)

but generates unnecessary errors:

![image](https://user-images.githubusercontent.com/3036176/208936226-0447814c-cfd4-4b41-8020-3bcd3dc11a44.png)

```
ERROR: Condition "p_new_capacity < capacity" is true.
   at: OAHashMap<unsigned __int64,int,struct HashMapHasherDefault,struct HashMapComparatorDefault<unsigned __int64> >::)
ERROR: Condition "p_new_capacity < capacity" is true.
   at: OAHashMap<unsigned __int64,int,struct HashMapHasherDefault,struct HashMapComparatorDefault<unsigned __int64> >::)
```


### Steps to reproduce

Check the attached project.

### Minimal reproduction project

[convex_polygon_test.zip](https://github.com/godotengine/godot/files/10278802/convex_polygon_test.zip)

e = intersection->reverse;
			if (e->prev == e) {
				removed->edges = nullptr;
			} else {
				removed->edges = e->prev;
				e->prev->link(e->next);
				e->link(e);
			}
#ifdef DEBUG_CONVEX_HULL
			printf("1: Removed part contains (%d %d %d)\n", removed->point.x, removed->point.y, removed->point.z);
#endif
			Point64 n0 = intersection->face->get_normal();
			Point64 n1 = intersection->reverse->face->get_normal();
			int64_t m00 = p_face->dir0.dot(n0);
			int64_t m01 = p_face->dir1.dot(n0);
			int64_t m10 = p_face->dir0.dot(n1);
			int64_t m11 = p_face->dir1.dot(n1);
			int64_t r0 = (intersection->face->origin - shifted_origin).dot(n0);
			int64_t r1 = (intersection->reverse->face->origin - shifted_origin).dot(n1);
			Int128 det = Int128::mul(m00, m11) - Int128::mul(m01, m10);
			CHULL_ASSERT(det.get_sign() != 0);
			Vertex *v = vertex_pool.alloc();
			v->point.index = -1;
			v->copy = -1;
			v->point128 = PointR128(Int128::mul(p_face->dir0.x * r0, m11) - Int128::mul(p_face->dir0.x * r1, m01) + Int128::mul(p_face->dir1.x * r1, m00) - Int128::mul(p_face->dir1.x * r0, m10) + det * shifted_origin.x,
					Int128::mul(p_face->dir0.y * r0, m11) - Int128::mul(p_face->dir0.y * r1, m01) + Int128::mul(p_face->dir1.y * r1, m00) - Int128::mul(p_face->dir1.y * r0, m10) + det * shifted_origin.y,
					Int128::mul(p_face->dir0.z * r0, m11) - Int128::mul(p_face->dir0.z * r1, m01) + Int128::mul(p_face->dir1.z * r1, m00) - Int128::mul(p_face->dir1.z * r0, m10) + det * shifted_origin.z,
					det);
			v->point.x = (int32_t)v->point128.xvalue();
			v->point.y = (int32_t)v->point128.yvalue();