xmloff/source/text/txtexppr.cxx | 43 +++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 18 deletions(-)
New commits: commit 1ad69bbaa5bc356a553738fa52664b53343cd1f4 Author: Caolán McNamara <[email protected]> Date: Fri Jul 24 15:48:25 2015 +0100 Resolves: tdf#91950 optional entries may not be present here we appear to check if the preceding optional entries are of certain types. Presumably if they are optional then its legal for them not to exist at all, just that if they are there they should be in the right order. Change-Id: Id147b91d7d375d7985d901cda112c7757dc3fb19 Reviewed-on: https://gerrit.libreoffice.org/17353 Tested-by: Jenkins <[email protected]> Reviewed-by: Miklos Vajna <[email protected]> diff --git a/xmloff/source/text/txtexppr.cxx b/xmloff/source/text/txtexppr.cxx index dfb3594..bd0ed88 100644 --- a/xmloff/source/text/txtexppr.cxx +++ b/xmloff/source/text/txtexppr.cxx @@ -71,35 +71,42 @@ void XMLTextExportPropertySetMapper::handleElementItem( case CTF_BACKGROUND_URL: { - assert(pProperties && nIdx >= 3); const Any *pPos = 0, *pFilter = 0, *pTrans = 0; sal_uInt32 nPropIndex = rProperty.mnIndex; // these are all optional, so have to check them in order // note: this index order dependency is a steaming pile of manure - sal_uInt32 nIndex(nIdx - 1); - const XMLPropertyState& rFilter = (*pProperties)[nIndex]; - if (CTF_BACKGROUND_FILTER == getPropertySetMapper() - ->GetEntryContextId(rFilter.mnIndex)) + if (nIdx) { - pFilter = &rFilter.maValue; - --nIndex; + const XMLPropertyState& rFilter = (*pProperties)[nIdx - 1]; + if (CTF_BACKGROUND_FILTER == getPropertySetMapper() + ->GetEntryContextId(rFilter.mnIndex)) + { + pFilter = &rFilter.maValue; + --nIdx; + } } - const XMLPropertyState& rPos = (*pProperties)[nIndex]; - if (CTF_BACKGROUND_POS == getPropertySetMapper() - ->GetEntryContextId(rPos.mnIndex)) + if (nIdx) { - pPos = &rPos.maValue; - --nIndex; + const XMLPropertyState& rPos = (*pProperties)[nIdx - 1]; + if (CTF_BACKGROUND_POS == getPropertySetMapper() + ->GetEntryContextId(rPos.mnIndex)) + { + pPos = &rPos.maValue; + --nIdx; + } } - const XMLPropertyState& rTrans = (*pProperties)[nIndex]; - // #99657# transparency may be there, but doesn't have to be. - // If it's there, it must be in the right position. - if( CTF_BACKGROUND_TRANSPARENCY == getPropertySetMapper() - ->GetEntryContextId( rTrans.mnIndex ) ) - pTrans = &rTrans.maValue; + if (nIdx) + { + const XMLPropertyState& rTrans = (*pProperties)[nIdx - 1]; + // #99657# transparency may be there, but doesn't have to be. + // If it's there, it must be in the right position. + if( CTF_BACKGROUND_TRANSPARENCY == getPropertySetMapper() + ->GetEntryContextId( rTrans.mnIndex ) ) + pTrans = &rTrans.maValue; + } pThis->maBackgroundImageExport.exportXML( rProperty.maValue, pPos, pFilter, pTrans,
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
