Blob Blame History Raw
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 );