vcl/source/control/edit.cxx | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-)
New commits: commit ae2c96cd29e1900ffa9c6909af701a9198a08afb Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Mon Mar 29 12:11:45 2021 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Mon Mar 29 15:34:53 2021 +0200 cid#1474054 Uninitialized scalar variable this code was introduced with commit 57b5ed51d46fd5673dfe35125ceffa71d39f133d Date: Mon May 6 14:20:11 2013 +0900 Support IMR_QUERYCHARPOSITION in Writer and Calc. we're not bounds checking (nIndex+mpIMEInfos->nPos) so I have to assume that the range is considered safe in which case there's no point in checking aText.isEmpty(). If the range is unsafe then we needs proper bounds checking not just the isEmpty case Change-Id: I75dd3e0938a7fa892d700addcc93e6a4990fde4d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/113311 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx index 82e650e88b63..87aafd4bcb3b 100644 --- a/vcl/source/control/edit.cxx +++ b/vcl/source/control/edit.cxx @@ -2131,31 +2131,21 @@ void Edit::Command( const CommandEvent& rCEvt ) if (mpIMEInfos && mpIMEInfos->nLen > 0) { OUString aText = ImplGetText(); - tools::Long nDXBuffer[256]; - std::unique_ptr<tools::Long[]> pDXBuffer; - tools::Long* pDX = nDXBuffer; + std::vector<tools::Long> aDX(2*(aText.getLength()+1)); - if( !aText.isEmpty() ) - { - if( o3tl::make_unsigned(2*aText.getLength()) > SAL_N_ELEMENTS(nDXBuffer) ) - { - pDXBuffer.reset(new tools::Long[2*(aText.getLength()+1)]); - pDX = pDXBuffer.get(); - } + GetCaretPositions( aText, aDX.data(), 0, aText.getLength() ); - GetCaretPositions( aText, pDX, 0, aText.getLength() ); - } tools::Long nTH = GetTextHeight(); Point aPos( mnXOffset, ImplGetTextYPosition() ); - std::unique_ptr<tools::Rectangle[]> aRects(new tools::Rectangle[ mpIMEInfos->nLen ]); + std::vector<tools::Rectangle> aRects(mpIMEInfos->nLen); for ( int nIndex = 0; nIndex < mpIMEInfos->nLen; ++nIndex ) { tools::Rectangle aRect( aPos, Size( 10, nTH ) ); - aRect.SetLeft( pDX[2*(nIndex+mpIMEInfos->nPos)] + mnXOffset + ImplGetExtraXOffset() ); + aRect.SetLeft( aDX[2*(nIndex+mpIMEInfos->nPos)] + mnXOffset + ImplGetExtraXOffset() ); aRects[ nIndex ] = aRect; } - SetCompositionCharRect( aRects.get(), mpIMEInfos->nLen ); + SetCompositionCharRect(aRects.data(), mpIMEInfos->nLen); } } else _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits