reverted: --- b/sw/source/filter/ww8/wrtw8nds.cxx +++ a/sw/source/filter/ww8/wrtw8nds.cxx @@ -119,7 +119,9 @@ static String lcl_getFieldCode( const IFieldmark* pFieldmark ) { OSL_ENSURE(pFieldmark!=NULL, "where is my fieldmark???"); + if ( !pFieldmark) { + return String(); + } else if ( pFieldmark->GetFieldname( ).equalsAscii( ODF_FORMTEXT ) ) { - if ( pFieldmark->GetFieldname( ).equalsAscii( ODF_FORMTEXT ) ) { return String::CreateFromAscii(" FORMTEXT "); } else if ( pFieldmark->GetFieldname( ).equalsAscii( ODF_FORMDROPDOWN ) ) { return String::CreateFromAscii(" FORMDROPDOWN "); @@ -138,7 +140,9 @@ ww::eField lcl_getFieldId( const IFieldmark* pFieldmark ) { OSL_ENSURE(pFieldmark!=NULL, "where is my fieldmark???"); + if ( !pFieldmark ) { + return ww::eUNKNOWN; + } else if ( pFieldmark->GetFieldname( ).equalsAscii( ODF_FORMTEXT ) ) { - if ( pFieldmark->GetFieldname( ).equalsAscii( ODF_FORMTEXT ) ) { return ww::eFORMTEXT; } else if ( pFieldmark->GetFieldname( ).equalsAscii( ODF_FORMDROPDOWN ) ) { return ww::eFORMDROPDOWN; @@ -1826,11 +1830,11 @@ ::sw::mark::IFieldmark const * const pFieldmark = pMarkAccess->getFieldmarkFor( aPosition ); OSL_ENSURE( pFieldmark, "Looks like this doc is broken...; where is the Fieldmark for the FIELDSTART??" ); + if ( pFieldmark && pFieldmark->GetFieldname().equalsAscii( ODF_FORMTEXT ) ) - if ( pFieldmark->GetFieldname().equalsAscii( ODF_FORMTEXT ) ) AppendBookmark( pFieldmark->GetName(), false ); ww::eField eFieldId = lcl_getFieldId( pFieldmark ); String sCode = lcl_getFieldCode( pFieldmark ); + if ( pFieldmark && pFieldmark->GetFieldname().equalsAscii( ODF_UNHANDLED ) ) - if ( pFieldmark->GetFieldname().equalsAscii( ODF_UNHANDLED ) ) { IFieldmark::parameter_map_t::const_iterator it = pFieldmark->GetParameters()->find( rtl::OUString::createFromAscii( ODF_ID_PARAM ) ); @@ -1851,13 +1855,13 @@ } } OutputField( NULL, eFieldId, sCode, WRITEFIELD_START | WRITEFIELD_CMD_START ); + if ( pFieldmark && pFieldmark->GetFieldname( ).equalsAscii( ODF_FORMTEXT ) ) - if ( pFieldmark->GetFieldname( ).equalsAscii( ODF_FORMTEXT ) ) WriteFormData( *pFieldmark ); + else if ( pFieldmark && pFieldmark->GetFieldname( ).equalsAscii( ODF_HYPERLINK ) ) - else if ( pFieldmark->GetFieldname( ).equalsAscii( ODF_HYPERLINK ) ) WriteHyperlinkData( *pFieldmark ); OutputField( NULL, lcl_getFieldId( pFieldmark ), String(), WRITEFIELD_CMD_END ); + if ( pFieldmark && pFieldmark->GetFieldname().equalsAscii( ODF_UNHANDLED ) ) - if ( pFieldmark->GetFieldname().equalsAscii( ODF_UNHANDLED ) ) { // Check for the presence of a linked OLE object IFieldmark::parameter_map_t::const_iterator it = pFieldmark->GetParameters()->find( @@ -1879,7 +1883,7 @@ OSL_ENSURE( pFieldmark, "Looks like this doc is broken...; where is the Fieldmark for the FIELDEND??" ); ww::eField eFieldId = lcl_getFieldId( pFieldmark ); + if ( pFieldmark && pFieldmark->GetFieldname().equalsAscii( ODF_UNHANDLED ) ) - if ( pFieldmark->GetFieldname().equalsAscii( ODF_UNHANDLED ) ) { IFieldmark::parameter_map_t::const_iterator it = pFieldmark->GetParameters()->find( rtl::OUString::createFromAscii( ODF_ID_PARAM ) ); @@ -1892,7 +1896,7 @@ } OutputField( NULL, eFieldId, String(), WRITEFIELD_CLOSE ); + if ( pFieldmark && pFieldmark->GetFieldname().equalsAscii( ODF_FORMTEXT ) ) - if ( pFieldmark->GetFieldname().equalsAscii( ODF_FORMTEXT ) ) AppendBookmark( pFieldmark->GetName(), false ); } else if ( ch == CH_TXT_ATR_FORMELEMENT ) @@ -1901,8 +1905,8 @@ ::sw::mark::IFieldmark const * const pFieldmark = pMarkAccess->getFieldmarkFor( aPosition ); OSL_ENSURE( pFieldmark, "Looks like this doc is broken...; where is the Fieldmark for the FIELDSTART??" ); + bool isDropdownOrCheckbox = pFieldmark && (pFieldmark->GetFieldname( ).equalsAscii( ODF_FORMDROPDOWN ) || + pFieldmark->GetFieldname( ).equalsAscii( ODF_FORMCHECKBOX )); - bool isDropdownOrCheckbox = pFieldmark->GetFieldname( ).equalsAscii( ODF_FORMDROPDOWN ) || - pFieldmark->GetFieldname( ).equalsAscii( ODF_FORMCHECKBOX ); if ( isDropdownOrCheckbox ) AppendBookmark( pFieldmark->GetName(), 0 );