input for fdo#45779 from a basegfx knowledgeable person needed
Pierre-André Jacquod
pjacquod at alumni.ethz.ch
Tue Feb 14 09:58:50 PST 2012
hello,
I have quickly investigated the crash in fdo#45779 when saving an
impress document.
The reason of the crash is in basegfx/inc/basegfx/point/b2dpoint.hxx
(line 82) where this is called:
2DPoint::B2DPoint (this=0xbfffc850, rPoint=...)
: B2DTuple(rPoint)
(from back-trace)
It turns out that in this case, rPoint is 0x0, the null pointer.
and B2DTuple does not support it
B2DTuple(const B2DTuple& rTup)
: mfX( rTup.mfX ),
mfY( rTup.mfY )
{}
Here you dereference the null pointer, which crash.
Ok, the basic attitude would be to let B2DTuple be Null-pointer
consistent: (checking that rTup is not NULL), but is it really a good idea?
What is a NULL B2DTuple ?
Or should the caller (this is called due to
basegfx/source/polygon/b2dpolygon.cxx:1257) take care of the case,
returning either the value, ... or NULL ?
B2DPoint B2DPolygon::getB2DPoint(sal_uInt32 nIndex) const
{
OSL_ENSURE(nIndex < mpPolygon->count(), "B2DPolygon a
return mpPolygon->getPoint(nIndex);
}
Or should I look higher in the hierarchy, saying that a NULL point in a
B2DPolygon has nothing to do and disallow it ?
As far as I could seee, this polygon had 4 elements / points, all with
NULL data at the time of the crash :-/
What would be the right (and most meaningfull) approach ?
Thanks & regards
Pierre-André
More information about the LibreOffice
mailing list