xmloff: ODF import: fix crash on fdo34997-1.odt

Clean up the redundant checks too, these are all called after first
checking hasCurrentFieldCtx().

(regression from 463178fef5c22f1a04d10e54491852d56e2038b0)

Change-Id: Ieec848944ef576caf319d5da7dc11139a4d26c58
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140503
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
(cherry picked from commit 61f5acad053db2ee019b639f2c2c861e9e8cd4f8)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/140511
Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
diff --git a/xmloff/source/text/XMLTextMarkImportContext.cxx b/xmloff/source/text/XMLTextMarkImportContext.cxx
index 4e42899..4a71194 100644
--- a/xmloff/source/text/XMLTextMarkImportContext.cxx
+++ b/xmloff/source/text/XMLTextMarkImportContext.cxx
@@ -436,7 +436,7 @@ void XMLTextMarkImportContext::endFastElement(sal_Int32 nElement)
        }
        case TypeFieldmarkEnd:
        {
            if (!m_rHelper.hasCurrentFieldSeparator())
            if (m_rHelper.hasCurrentFieldCtx() && !m_rHelper.hasCurrentFieldSeparator())
            {   // backward compat for old files without separator
                InsertFieldmark(GetImport(), m_rHelper, true);
            }
diff --git a/xmloff/source/text/txtimp.cxx b/xmloff/source/text/txtimp.cxx
index f26ce21..aad6c61 100644
--- a/xmloff/source/text/txtimp.cxx
+++ b/xmloff/source/text/txtimp.cxx
@@ -2127,49 +2127,26 @@ XMLTextImportHelper::popFieldCtx()
void XMLTextImportHelper::addFieldParam( const OUString& name, const OUString& value )
{
    assert(!m_xImpl->m_FieldStack.empty());
    if (!m_xImpl->m_FieldStack.empty()) {
        Impl::field_stack_item_t & FieldStackItem(m_xImpl->m_FieldStack.top());
        std::get<1>(FieldStackItem).emplace_back( name, value );
    }
    Impl::field_stack_item_t & FieldStackItem(m_xImpl->m_FieldStack.top());
    std::get<1>(FieldStackItem).emplace_back( name, value );
}

::std::pair<OUString, OUString> XMLTextImportHelper::getCurrentFieldType() const
{
    assert(!m_xImpl->m_FieldStack.empty());
    if (!m_xImpl->m_FieldStack.empty())
    {
        return std::get<0>(m_xImpl->m_FieldStack.top());
    }
    else
    {
        return {};
    }
    return std::get<0>(m_xImpl->m_FieldStack.top());
}

uno::Reference<text::XTextRange> XMLTextImportHelper::getCurrentFieldStart() const
{
    assert(!m_xImpl->m_FieldStack.empty());
    if (!m_xImpl->m_FieldStack.empty())
    {
        return std::get<3>(m_xImpl->m_FieldStack.top());
    }
    else
    {
        return {};
    }
    return std::get<3>(m_xImpl->m_FieldStack.top());
}

bool XMLTextImportHelper::hasCurrentFieldSeparator() const
{
    assert(!m_xImpl->m_FieldStack.empty());
    if (!m_xImpl->m_FieldStack.empty())
    {
        return std::get<2>(m_xImpl->m_FieldStack.top()).is();
    }
    else
    {
        return {};
    }
    return std::get<2>(m_xImpl->m_FieldStack.top()).is();
}

bool XMLTextImportHelper::hasCurrentFieldCtx() const
@@ -2180,7 +2157,7 @@ bool XMLTextImportHelper::hasCurrentFieldCtx() const
void XMLTextImportHelper::setCurrentFieldParamsTo(css::uno::Reference< css::text::XFormField> const &xFormField)
{
    assert(!m_xImpl->m_FieldStack.empty());
    if (!m_xImpl->m_FieldStack.empty() && xFormField.is())
    if (xFormField.is())
    {
        FieldParamImporter(&std::get<1>(m_xImpl->m_FieldStack.top()),
            xFormField->getParameters()).Import();