Return 0 volume for empty AlignedBox
diff --git a/Eigen/src/Geometry/AlignedBox.h b/Eigen/src/Geometry/AlignedBox.h
index a4e76d9..e97a8f2 100644
--- a/Eigen/src/Geometry/AlignedBox.h
+++ b/Eigen/src/Geometry/AlignedBox.h
@@ -173,7 +173,7 @@
}
/** \returns the volume of the bounding box */
- EIGEN_DEVICE_FUNC inline Scalar volume() const { return sizes().prod(); }
+ EIGEN_DEVICE_FUNC inline Scalar volume() const { return isEmpty() ? Scalar(0) : sizes().prod(); }
/** \returns an expression for the bounding box diagonal vector
* if the length of the diagonal is needed: diagonal().norm()
diff --git a/test/geo_alignedbox.cpp b/test/geo_alignedbox.cpp
index f335b34..da49c08 100644
--- a/test/geo_alignedbox.cpp
+++ b/test/geo_alignedbox.cpp
@@ -51,6 +51,8 @@
kill_extra_precision(p0);
kill_extra_precision(p1);
+ VERIFY(numext::equal_strict(b0.volume(), Scalar(0)));
+
b0.extend(p0);
b0.extend(p1);
VERIFY(b0.contains(p0 * s1 + (Scalar(1) - s1) * p1));
@@ -423,6 +425,8 @@
BoxType b0(dim);
+ VERIFY(numext::equal_strict(b0.volume(), Scalar(0)));
+
b0.extend(p0);
b0.extend(p1);