Handle empty range properly
Since commit 690526f95e
(Generalize basegfx::fround for templated return type, 2024-04-14),
an assertion could fail for certain case, like
include/o3tl/unit_conversion.hxx:75: sal_Int64 o3tl::detail::MulDiv(I,
sal_Int64, sal_Int64) [I = long]: Assertion `isBetween(n,
(SAL_MIN_INT64 + d / 2) / m, (SAL_MAX_INT64 - d / 2) / m)'
The problem was unchecked case of empty B2DRange.
Change-Id: Ice9125ea557b73a7fabf64bc1ad9368f503ad525
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166101
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
This commit is contained in:
committed by
Caolán McNamara
parent
edfe8adcec
commit
3f0220f18a
@@ -1156,10 +1156,19 @@ void ImplEESdrObject::Init()
|
||||
{
|
||||
// if it's a group, the unrotated range is needed for that group
|
||||
const basegfx::B2DRange aUnrotatedRange(getUnrotatedGroupBoundRange(mXShape));
|
||||
const Point aNewP(basegfx::fround<tools::Long>(aUnrotatedRange.getMinX()), basegfx::fround<tools::Long>(aUnrotatedRange.getMinY()));
|
||||
const Size aNewS(basegfx::fround<tools::Long>(aUnrotatedRange.getWidth()), basegfx::fround<tools::Long>(aUnrotatedRange.getHeight()));
|
||||
if (aUnrotatedRange.isEmpty())
|
||||
{
|
||||
SetRect(tools::Rectangle());
|
||||
}
|
||||
else
|
||||
{
|
||||
const Point aNewP(basegfx::fround<tools::Long>(aUnrotatedRange.getMinX()),
|
||||
basegfx::fround<tools::Long>(aUnrotatedRange.getMinY()));
|
||||
const Size aNewS(basegfx::fround<tools::Long>(aUnrotatedRange.getWidth()),
|
||||
basegfx::fround<tools::Long>(aUnrotatedRange.getHeight()));
|
||||
|
||||
SetRect(ImplEESdrWriter::ImplMapPoint(aNewP), ImplEESdrWriter::ImplMapSize(aNewS));
|
||||
SetRect(ImplEESdrWriter::ImplMapPoint(aNewP), ImplEESdrWriter::ImplMapSize(aNewS));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user