From f7c4c6313dbe305d9dd2f7a0c49f436033bbf62e Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Sun, 28 Jan 2018 10:31:00 +0100 Subject: SvxAccessibleTextIndex::mnEEIndex need not be bounded sal_uInt16 It was originally introduced with type USHORT (a909acb7009acadffa53e74ea05ddb88803490f1 "#98735# Refactored unoedit/unoedacc.cxx"), then shortly after changed to sal_Int32 (a0089a21f047ce8b5378b45f1535269e3600d681 "#98735# Fixed various off-by-one mistakes"), presumably because it needed to hold values slightly larger than USHRT_MAX. But at least since the surrounding code has been changed to use sal_Int32 throughout (e.g., structs like EPosition and ESeleciton in include/editeng/editdata.hxx with 3cbfcee36dd16e451d76c561eaaaee0ff29b01a5 "xub_StrLen and tools/string.hxx final straw"), there appears to be no more reason to effectively restrict mnEEIndex to sal_uInt16 values. Change-Id: I78f02be1f2736a626a836ac992230a74cc669fd3 Reviewed-on: https://gerrit.libreoffice.org/48766 Tested-by: Jenkins Reviewed-by: Stephan Bergmann --- editeng/source/uno/unoedprx.cxx | 16 ++++++++-------- include/editeng/unoedprx.hxx | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/editeng/source/uno/unoedprx.cxx b/editeng/source/uno/unoedprx.cxx index d49032f00423..24f95f6c03f8 100644 --- a/editeng/source/uno/unoedprx.cxx +++ b/editeng/source/uno/unoedprx.cxx @@ -89,9 +89,9 @@ public: @param rTF The text forwarder to use in the calculations */ - void SetEEIndex( sal_uInt16 nEEIndex, const SvxTextForwarder& rTF ); - void SetEEIndex( sal_Int32 nPara, sal_uInt16 nEEIndex, const SvxTextForwarder& rTF ) { SetParagraph(nPara); SetEEIndex(nEEIndex, rTF); } - sal_uInt16 GetEEIndex() const; + void SetEEIndex( sal_Int32 nEEIndex, const SvxTextForwarder& rTF ); + void SetEEIndex( sal_Int32 nPara, sal_Int32 nEEIndex, const SvxTextForwarder& rTF ) { SetParagraph(nPara); SetEEIndex(nEEIndex, rTF); } + sal_Int32 GetEEIndex() const; void SetFieldOffset( sal_Int32 nOffset, sal_Int32 nLen ) { mnFieldOffset = nOffset; mnFieldLen = nLen; } sal_Int32 GetFieldOffset() const { return mnFieldOffset; } @@ -158,15 +158,15 @@ ESelection MakeEESelection( const SvxAccessibleTextIndex& rIndex ) rIndex.GetParagraph(), rIndex.GetEEIndex() + 1 ); } -sal_uInt16 SvxAccessibleTextIndex::GetEEIndex() const +sal_Int32 SvxAccessibleTextIndex::GetEEIndex() const { - DBG_ASSERT(mnEEIndex >= 0 && mnEEIndex <= USHRT_MAX, + DBG_ASSERT(mnEEIndex >= 0, "SvxAccessibleTextIndex::GetEEIndex: index value overflow"); - return static_cast< sal_uInt16 > (mnEEIndex); + return mnEEIndex; } -void SvxAccessibleTextIndex::SetEEIndex( sal_uInt16 nEEIndex, const SvxTextForwarder& rTF ) +void SvxAccessibleTextIndex::SetEEIndex( sal_Int32 nEEIndex, const SvxTextForwarder& rTF ) { // reset mnFieldOffset = 0; @@ -632,7 +632,7 @@ void SvxAccessibleTextAdapter::FieldClicked( const SvxFieldItem& rField, sal_Int mpTextForwarder->FieldClicked( rField, nPara, nPos ); } -sal_uInt16 SvxAccessibleTextAdapter::CalcEditEngineIndex( sal_Int32 nPara, sal_Int32 nLogicalIndex ) +sal_Int32 SvxAccessibleTextAdapter::CalcEditEngineIndex( sal_Int32 nPara, sal_Int32 nLogicalIndex ) { assert(mpTextForwarder && "SvxAccessibleTextAdapter: no forwarder"); diff --git a/include/editeng/unoedprx.hxx b/include/editeng/unoedprx.hxx index 39bc5f163b6d..559c0390294e 100644 --- a/include/editeng/unoedprx.hxx +++ b/include/editeng/unoedprx.hxx @@ -42,7 +42,7 @@ public: virtual void RemoveAttribs( const ESelection& rSelection ) override; virtual void GetPortions( sal_Int32 nPara, std::vector& rList ) const override; - sal_uInt16 CalcEditEngineIndex( sal_Int32 nPara, sal_Int32 nLogicalIndex ); + sal_Int32 CalcEditEngineIndex( sal_Int32 nPara, sal_Int32 nLogicalIndex ); virtual SfxItemState GetItemState( const ESelection& rSel, sal_uInt16 nWhich ) const override; virtual SfxItemState GetItemState( sal_Int32 nPara, sal_uInt16 nWhich ) const override; -- cgit v1.2.3