Hi Noel,
I just saw this ubsan thing.
Looks like there is a mix-up with:
if
(SfxItemState::SET==rAttr.GetItemState(SID_ATTR_TRANSFORM_POS_X,true,&pPoolItem))
{
nPosDX=static_cast<const SfxInt32Item*>(pPoolItem)->GetValue() -
aRect.Left();
bChgPos=true;
}
if
(SfxItemState::SET==rAttr.GetItemState(SID_ATTR_TRANSFORM_POS_Y,true,&pPoolItem)){
nPosDY=static_cast<const SfxInt32Item*>(pPoolItem)->GetValue() -
aRect.Top();
bChgPos=true;
}
and so on - and the signed-ness of their types:
SfxUInt32Ite vs. SfxInt32Item
And I wondered - is that something we could build a table for, and a
clang plugin that could catch whenever we do something like:
cui/source/tabpages/swpossizetabpage.cxx: rSet->Put(
SfxInt32Item( GetWhich( SID_ATTR_TRANSFORM_POS_X ), nHoriByPos ) );
or perhaps harder:
chart2/source/controller/main/ChartController_Position.cxx:
nWhich = pPool->GetWhich(SID_ATTR_TRANSFORM_POS_X);
chart2/source/controller/main/ChartController_Position.cxx-
aItemSet.Put(SfxInt32Item(nWhich, nValue));
And warn in the code that the wrong type is going
into this pool of 'any's ? =) [ or perhaps we have something like
that already? ]
Just a thought,
Michael.
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]:
/home/collabora/online-buildscripts/staging/builddir/libreoffice/svx/source/svdraw/svdedtv1.cxx:1588:16:
runtime error: downcast of address 0x6030016eb260 which does not point to an
object of type 'const SfxInt32Item'
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: 0x6030016eb260: note: object
is of type 'SfxUInt32Item'
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: c7 07 00 62 b0 71 99 c5 2b
7f 00 00 01 00 00 00 68 27 00 be 94 09 00 00 be be be be 01 00 00 00
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]:
^~~~~~~~~~~~~~~~~~~~~~~
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: vptr for
'SfxUInt32Item'
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: SUMMARY:
UndefinedBehaviorSanitizer: undefined-behavior
/home/collabora/online-buildscripts/staging/builddir/libreoffice/svx/source/svdraw/svdedtv1.cxx:1588:16
in
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]:
/home/collabora/online-buildscripts/staging/builddir/libreoffice/svx/source/svdraw/svdedtv1.cxx:1588:61:
runtime error: member call on address 0x6030016eb260 which does not point to
an object of type 'CntInt32Item'
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: 0x6030016eb260: note: object
is of type 'SfxUInt32Item'
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: c7 07 00 62 b0 71 99 c5 2b
7f 00 00 01 00 00 00 68 27 00 be 94 09 00 00 be be be be 01 00 00 00
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]:
^~~~~~~~~~~~~~~~~~~~~~~
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: vptr for
'SfxUInt32Item'
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: SUMMARY:
UndefinedBehaviorSanitizer: undefined-behavior
/home/collabora/online-buildscripts/staging/builddir/libreoffice/svx/source/svdraw/svdedtv1.cxx:1588:61
in
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]:
/home/collabora/online-buildscripts/staging/builddir/libreoffice/include/svl/cintitem.hxx:126:41:
runtime error: member access within address 0x6030016eb260 which does not
point to an object of type 'const CntInt32Item'
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: 0x6030016eb260: note: object
is of type 'SfxUInt32Item'
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: c7 07 00 62 b0 71 99 c5 2b
7f 00 00 01 00 00 00 68 27 00 be 94 09 00 00 be be be be 01 00 00 00
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]:
^~~~~~~~~~~~~~~~~~~~~~~
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: vptr for
'SfxUInt32Item'
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: SUMMARY:
UndefinedBehaviorSanitizer: undefined-behavior
/home/collabora/online-buildscripts/staging/builddir/libreoffice/include/svl/cintitem.hxx:126:41
in
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]:
/home/collabora/online-buildscripts/staging/builddir/libreoffice/svx/source/svdraw/svdedtv1.cxx:1592:16:
runtime error: downcast of address 0x6030020a1300 which does not point to an
object of type 'const SfxInt32Item'
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: 0x6030020a1300: note: object
is of type 'SfxUInt32Item'
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: c7 07 00 62 b0 71 99 c5 2b
7f 00 00 01 00 00 00 69 27 00 be ec 03 00 00 be be be be 01 00 00 00
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]:
^~~~~~~~~~~~~~~~~~~~~~~
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: vptr for
'SfxUInt32Item'
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: SUMMARY:
UndefinedBehaviorSanitizer: undefined-behavior
/home/collabora/online-buildscripts/staging/builddir/libreoffice/svx/source/svdraw/svdedtv1.cxx:1592:16
in
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]:
/home/collabora/online-buildscripts/staging/builddir/libreoffice/svx/source/svdraw/svdedtv1.cxx:1592:61:
runtime error: member call on address 0x6030020a1300 which does not point to
an object of type 'CntInt32Item'
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: 0x6030020a1300: note: object
is of type 'SfxUInt32Item'
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: c7 07 00 62 b0 71 99 c5 2b
7f 00 00 01 00 00 00 69 27 00 be ec 03 00 00 be be be be 01 00 00 00
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]:
^~~~~~~~~~~~~~~~~~~~~~~
Jan 18 06:42:13 ip-172-31-35-149 coolwsd[23775]: vptr for
'SfxUInt32Item'
--
[email protected] <><, GM Collabora Productivity
Hangout: [email protected], Skype: mmeeks
(M) +44 7795 666 147 - timezone usually UK / Europe