summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2014-04-01 15:54:58 +0200
committerMiklos Vajna <vmiklos@collabora.co.uk>2014-04-01 16:29:32 +0200
commit1e3c7b854baac2502bed72ff8e3e1b21b507735b (patch)
treed96274d963ec78be020d842d5cacff7a515bebd3
parent6f8ffc4eed5ff584bc9c9b9c210e7e0c58ccfd9b (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.sce6
-rw-r--r--sw/source/core/unocore/unostyle.cxx4
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