diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2014-04-01 15:54:58 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2014-04-01 16:29:32 +0200 |
commit | 1e3c7b854baac2502bed72ff8e3e1b21b507735b (patch) | |
tree | d96274d963ec78be020d842d5cacff7a515bebd3 | |
parent | 6f8ffc4eed5ff584bc9c9b9c210e7e0c58ccfd9b (diff) |
SwXStyle::getPropertyValue: don't try to read a float into a sal_Int32
The problem was that for the CharDiffHeight UNO property,
SvxFontHeightItem::QueryValue() put a float to the returned uno::Any.
When we noticed that it's not sal_Int16, we tried to read that into a
sal_Int32 (which failed), and then wrote back the result to the
uno::Any, that's how the result value was 0.
Fix this by checking if reading the uno::Any into a sal_Int32 succeeds.
Change-Id: Ie2269a24fe82ae241940811e7a2f5deaf9f1aeb0
-rw-r--r-- | sw/qa/unoapi/sw.sce | 6 | ||||
-rw-r--r-- | sw/source/core/unocore/unostyle.cxx | 4 |
2 files changed, 5 insertions, 5 deletions
diff --git a/sw/qa/unoapi/sw.sce b/sw/qa/unoapi/sw.sce index cc6a35915a5e..4ea9fab1da1f 100644 --- a/sw/qa/unoapi/sw.sce +++ b/sw/qa/unoapi/sw.sce @@ -16,10 +16,10 @@ # the License at http://www.apache.org/licenses/LICENSE-2.0 . # -# FIXME port to FillAttributes -o sw.CharacterStyle -# FIXME port to FillAttributes -o sw.ConditionalParagraphStyle +-o sw.CharacterStyle +-o sw.ConditionalParagraphStyle -o sw.PageStyle -# FIXME port to FillAttributes -o sw.ParagraphStyle +-o sw.ParagraphStyle #i111197 -o sw.SwAccessibleDocumentPageView #i86751 -o sw.SwAccessibleDocumentView -o sw.SwAccessibleEndnoteView diff --git a/sw/source/core/unocore/unostyle.cxx b/sw/source/core/unocore/unostyle.cxx index 45047ed6c1bb..1c417c8b5693 100644 --- a/sw/source/core/unocore/unostyle.cxx +++ b/sw/source/core/unocore/unostyle.cxx @@ -2557,8 +2557,8 @@ static uno::Any lcl_GetStyleProperty(const SfxItemPropertySimpleEntry& rEntry, { // since the sfx uint16 item now exports a sal_Int32, we may have to fix this here sal_Int32 nValue = 0; - aRet >>= nValue; - aRet <<= (sal_Int16)nValue; + if (aRet >>= nValue) + aRet <<= (sal_Int16)nValue; } //UUUU check for needed metric translation |