Greetings,
In a comment to his change fixing issue 109146
<http://www.openoffice.org/issues/show_bug.cgi?id=109146>,
Stephan Bergmann commented
(but I must confess I have no idea how to trigger the code in
a running OOo, to verify that the assertion no longer wrongly
fires)
As it happens, my combination of compiler and configuration
options and I know no what else result in literal character
strings being stored at addresses according to where the string
is first encountered in the file. Within DEV300_m71, I imported
inettype.cxx after S.B.'s subsequent change ( the relevant code
reads ...
#if defined DBG_UTIL
for (sal_Size i = 0; i < nSize - 1; ++i)
DBG_ASSERT(
rtl_str_compare(
pMap[i].m_pTypeName, pMap[i + 1].m_pTypeName) < 0,
"seekEntry(): Bad map");
#endif
), and the assertion did not fire. I verified the descending
addresses of m_pTypeName with a breakpoint at inettype.cxx:810,
and saw ...
(gdb) p pMap[61]
$1 = {m_pTypeName = 0xb754d6bd "tiff", m_eTypeID = CONTENT_TYPE_IMAGE_TIFF,
m_pExtension = 0xb754d6bc ""}
(gdb) p pMap[62]
$2 = {m_pTypeName = 0xb754d54f "txt", m_eTypeID = CONTENT_TYPE_TEXT_PLAIN,
m_pExtension = 0xb754d6bc ""}
Just for good measure, the following code does (rightly!) make
the assertion fire.
int tje_20100316() {
//
// Make assertion in seekEntry fire for bad sequence in the
// array to be searched.
//
MediaTypeEntry const mteBad[] =
{
{ "txt", CONTENT_TYPE_TEXT_PLAIN, "" },
{ "tiff", CONTENT_TYPE_IMAGE_TIFF, "" },
};
UniString extn = UniString::CreateFromAscii( "txt" );
MediaTypeEntry const *pEntry =
seekEntry( extn, mteBad, sizeof( mteBad ) / sizeof( mteBad[ 0 ] ) );
return 0;
} // tje_20100316
If any of this information is worth recording in the issue, I can
do that.
Hope this helps.
Terry.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]