[Libreoffice] [PATCH] fdo#34908
Noel Power
nopower at novell.com
Tue Mar 29 05:13:34 PDT 2011
Hi Lubos
On 25/03/11 18:52, Lubos Lunak wrote:
> printf( "%p %p %s %p %p %s %p %p %s\n", ptr, dynamic_cast< void*>( ptr ),
> typeid( *ptr ).name(), pFieldmark, dynamic_cast< void*>( pFieldmark ),
> typeid( *pFieldmark ).name(), pCheckboxFm, dynamic_cast< void*>(
> pCheckboxFm ), typeid( *pCheckboxFm ).name());
>
> (where 'ptr' is what you get from the pMarksAccess->makeNoTextFieldBookmark()
> call before casting to anything)
Okay, managed to put in some debug
here the code snippet(s) were the debug was done ( same for
distro/no-distro except for some text to distinguish one from the other )
ww8par3.cxx: ( SwWW8ImplReader::Read_F_FormCheckBox )
[...]
if (aBookmarkName.Len()>0)
{
IDocumentMarkAccess* pMarksAccess = rDoc.getIDocumentMarkAccess( );
//IFieldmark* pFieldmark = dynamic_cast<IFieldmark*>(
pMarksAccess->makeNoTextFieldBookmark(
IFieldmark* ptr = ( pMarksAccess->makeNoTextFieldBookmark(
*pPaM, aBookmarkName,
rtl::OUString::createFromAscii( ODF_FORMCHECKBOX ) ) );
IFieldmark* pFieldmark = dynamic_cast<IFieldmark*>( ptr );
OSL_ENSURE(pFieldmark!=NULL, "hmmm; why was the bookmark not
created?");
if (pFieldmark!=NULL) {
IFieldmark::parameter_map_t* const pParameters =
pFieldmark->GetParameters();
ICheckboxFieldmark* pCheckboxFm =
reinterpret_cast<ICheckboxFieldmark*>(pFieldmark);
OSL_TRACE( "distro ( Read_F_FormCheckBox ) %p %p %s %p %p
%s %p %p %s reinterpret %p %s\n",
ptr, dynamic_cast< void* >( ptr ), typeid( *ptr ).name(),
pFieldmark, dynamic_cast< void* >( pFieldmark ),
typeid( *pFieldmark ).name(),
pCheckboxFm, dynamic_cast< void* >( pCheckboxFm ),
typeid( *pCheckboxFm ).name(),
reinterpret_cast<ICheckboxFieldmark*>( ptr ), typeid(
(*reinterpret_cast<ICheckboxFieldmark*>( ptr ))).name() );
OSL_TRACE("dynamic_cast<ICheckboxFieldmark*>( ptr ) %p",
dynamic_cast<ICheckboxFieldmark*>( ptr ));
[...]
docbm.cxx ( MarkManager::makeNoTextFieldBookmark )
[...]
sw::mark::IMark* pMark = makeMark( rPaM, rName,
IDocumentMarkAccess::CHECKBOX_FIELDMARK );
sw::mark::IFieldmark* pFieldMark =
dynamic_cast<sw::mark::IFieldmark*>( pMark );
sw::mark::ICheckboxFieldmark* pCBmark =
dynamic_cast<sw::mark::ICheckboxFieldmark*>( pMark );
OSL_TRACE( "distro (makeNoTextFieldBookmark ) %p %p %s %p %p
%s \n", pMark, dynamic_cast< void* >( pMark ), typeid( *pMark ).name(),
pCBmark, dynamic_cast< void* >( pCBmark ), typeid( *pCBmark ).name( )
[...]
and the results......
disto 32-bit
============
distro (makeNoTextFieldBookmark ) 0x8d013a4 0x8d01370
N2sw4mark17CheckboxFieldmarkE 0x8d013a4 0x8d01370
N2sw4mark17CheckboxFieldmarkE
(interesting in the library the implementation is in the dynamic_cast
works )
distro 0x8d013a4 0x8d01370 N2sw4mark17CheckboxFieldmarkE 0x8d013a4
0x8d01370 N2sw4mark17CheckboxFieldmarkE 0x8d013a4 0x8d01370
N2sw4mark17CheckboxFieldmarkE reinterpret 0x8d013a4
N2sw4mark17CheckboxFieldmarkE
dynamic_cast<ICheckboxFieldmark*>( ptr ) (nil)
( and here it doesn't so I guess there is some symbol confusion.. but I
don't see it )
output from nm:
nm unxlngi6.pro/lib/libswli.so | c++filt | grep ICheckboxField
00343c90 t sw::mark::ICheckboxFieldmark::ICheckboxFieldmark()
00344bdc t sw::mark::ICheckboxFieldmark::~ICheckboxFieldmark()
00344d98 t sw::mark::ICheckboxFieldmark::~ICheckboxFieldmark()
00344f36 t sw::mark::ICheckboxFieldmark::~ICheckboxFieldmark()
00ebc9c0 d construction vtable for
sw::mark::ICheckboxFieldmark-in-sw::mark::CheckboxFieldmark
00ebe3a0 V construction vtable for
sw::mark::IFieldmark-in-sw::mark::ICheckboxFieldmark
00ebe460 V construction vtable for
sw::mark::IMark-in-sw::mark::ICheckboxFieldmark
00ebdea0 V typeinfo for sw::mark::ICheckboxFieldmark
00d4ef30 V typeinfo name for sw::mark::ICheckboxFieldmark
00ebe360 V VTT for sw::mark::ICheckboxFieldmark
00ebe280 V vtable for sw::mark::ICheckboxFieldmark
00344bbe t virtual thunk to
sw::mark::ICheckboxFieldmark::~ICheckboxFieldmark()
00344d7a t virtual thunk to
sw::mark::ICheckboxFieldmark::~ICheckboxFieldmark()
00344bcd t virtual thunk to
sw::mark::ICheckboxFieldmark::~ICheckboxFieldmark()
00344d89 t virtual thunk to
sw::mark::ICheckboxFieldmark::~ICheckboxFieldmark()
nm unxlngi6.pro/lib/libmswordli.so | c++filt | grep ICheckboxField
0023b9b8 V typeinfo for sw::mark::ICheckboxFieldmark
001f303c V typeinfo name for sw::mark::ICheckboxFieldmark
non - disto 32-bit
==================
no-distro (makeNoTextFieldBookmark ) 0x8c8c2ec 0x8c8c2b8
N2sw4mark17CheckboxFieldmarkE 0x8c8c2ec 0x8c8c2b8
N2sw4mark17CheckboxFieldmarkE
no-distro 0x8c8c2ec 0x8c8c2b8 N2sw4mark17CheckboxFieldmarkE 0x8c8c2ec
0x8c8c2b8 N2sw4mark17CheckboxFieldmarkE 0x8c8c2ec 0x8c8c2b8
N2sw4mark17CheckboxFieldmarkE reinterpret 0x8c8c2ec
N2sw4mark17CheckboxFieldmarkE
dynamic_cast<ICheckboxFieldmark*>( ptr ) 0x8c8c2ec
nm unxlngi6.pro/lib/libswli.so | c++filt | grep ICheckboxField
00355fc8 t sw::mark::ICheckboxFieldmark::ICheckboxFieldmark()
00356f14 t sw::mark::ICheckboxFieldmark::~ICheckboxFieldmark()
003570d0 t sw::mark::ICheckboxFieldmark::~ICheckboxFieldmark()
0035726e t sw::mark::ICheckboxFieldmark::~ICheckboxFieldmark()
00eb2e60 d construction vtable for
sw::mark::ICheckboxFieldmark-in-sw::mark::CheckboxFieldmark
00eb4840 V construction vtable for
sw::mark::IFieldmark-in-sw::mark::ICheckboxFieldmark
00eb4900 V construction vtable for
sw::mark::IMark-in-sw::mark::ICheckboxFieldmark
00eb4340 V typeinfo for sw::mark::ICheckboxFieldmark
00d4f5d8 V typeinfo name for sw::mark::ICheckboxFieldmark
00eb4800 V VTT for sw::mark::ICheckboxFieldmark
00eb4720 V vtable for sw::mark::ICheckboxFieldmark
00356ef6 t virtual thunk to
sw::mark::ICheckboxFieldmark::~ICheckboxFieldmark()
003570b2 t virtual thunk to
sw::mark::ICheckboxFieldmark::~ICheckboxFieldmark()
00356f05 t virtual thunk to
sw::mark::ICheckboxFieldmark::~ICheckboxFieldmark()
003570c1 t virtual thunk to
sw::mark::ICheckboxFieldmark::~ICheckboxFieldmark()
nm unxlngi6.pro/lib/libmswordli.so | c++filt | grep ICheckboxField
002399f8 V typeinfo for sw::mark::ICheckboxFieldmark
001f201c V typeinfo name for sw::mark::ICheckboxFieldmark
does anything here stand out? ( /me is not that up on library symbol
binding, visibility etc. stuff.... must read more :-) )
More information about the LibreOffice
mailing list