desktop/unx/source/start.c | 2 i18nutil/source/utility/unicode.cxx | 2 include/vcl/salbtype.hxx | 265 ++++++--------------- sc/source/core/data/document.cxx | 2 shell/source/backends/desktopbe/desktopbackend.cxx | 2 vcl/inc/unx/i18n_cb.hxx | 33 +- vcl/source/control/edit.cxx | 2 vcl/source/control/field2.cxx | 7 vcl/source/fontsubset/fontsubset.cxx | 11 vcl/source/gdi/bitmap.cxx | 4 vcl/source/gdi/pdfwriter_impl.cxx | 2 vcl/source/outdev/text.cxx | 2 12 files changed, 127 insertions(+), 207 deletions(-)
New commits: commit 73cc391e9c9646e09722ce4324918646202c693b Author: Caolán McNamara <caol...@redhat.com> Date: Wed Feb 8 10:15:10 2017 +0000 use c++11 data() Change-Id: Id111686979d6002d4b4206d18980c38e6260971f diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx index 7f04551..b3e0e38 100644 --- a/vcl/source/gdi/pdfwriter_impl.cxx +++ b/vcl/source/gdi/pdfwriter_impl.cxx @@ -8733,7 +8733,7 @@ void PDFWriterImpl::drawLayout( SalLayout& rLayout, const OUString& rText, bool // mapping is possible } - registerGlyphs( nGlyphs, pGlyphs, pGlyphWidths, &aUnicodes[0], pUnicodesPerGlyph, pMappedGlyphs, pMappedFontObjects, pFallbackFonts ); + registerGlyphs( nGlyphs, pGlyphs, pGlyphWidths, aUnicodes.data(), pUnicodesPerGlyph, pMappedGlyphs, pMappedFontObjects, pFallbackFonts ); for( int i = 0; i < nGlyphs; i++ ) { commit f12b4be44d8e490b7816206236bb628b20602716 Author: Caolán McNamara <caol...@redhat.com> Date: Wed Feb 8 10:11:04 2017 +0000 coverity#707560 Uninitialized scalar variable Change-Id: Ia041c86a689f92795298ee16922ab42734820ec6 diff --git a/vcl/source/fontsubset/fontsubset.cxx b/vcl/source/fontsubset/fontsubset.cxx index 4eca8a4..3e496b1 100644 --- a/vcl/source/fontsubset/fontsubset.cxx +++ b/vcl/source/fontsubset/fontsubset.cxx @@ -128,9 +128,10 @@ bool FontSubsetInfo::CreateFontSubsetFromSfnt( sal_Int32* pOutGlyphWidths ) // handle SFNT_TTF fonts // by forwarding the subset request to AG's sft subsetter #if 1 // TODO: remove conversion tp 16bit glyphids when sft-subsetter has been updated - sal_uInt16 aShortGlyphIds[256]; - for( int i = 0; i < mnReqGlyphCount; ++i) - aShortGlyphIds[i] = (sal_uInt16)mpReqGlyphIds[i]; + std::vector<sal_uInt16> aShortGlyphIds; + aShortGlyphIds.reserve(mnReqGlyphCount); + for (int i = 0; i < mnReqGlyphCount; ++i) + aShortGlyphIds.push_back((sal_uInt16)mpReqGlyphIds[i]); // remove const_cast when sft-subsetter is const-correct sal_uInt8* pEncArray = const_cast<sal_uInt8*>( mpReqEncodedIds ); #endif @@ -138,12 +139,12 @@ bool FontSubsetInfo::CreateFontSubsetFromSfnt( sal_Int32* pOutGlyphWidths ) if( (mnReqFontTypeMask & TYPE42_FONT) != 0 ) { nSFTErr = CreateT42FromTTGlyphs( mpSftTTFont, mpOutFile, mpReqFontName, - aShortGlyphIds, pEncArray, mnReqGlyphCount ); + aShortGlyphIds.data(), pEncArray, mnReqGlyphCount ); } else if( (mnReqFontTypeMask & TYPE3_FONT) != 0 ) { nSFTErr = CreateT3FromTTGlyphs( mpSftTTFont, mpOutFile, mpReqFontName, - aShortGlyphIds, pEncArray, mnReqGlyphCount, + aShortGlyphIds.data(), pEncArray, mnReqGlyphCount, 0 /* 0 = horizontal, 1 = vertical */ ); } else if( (mnReqFontTypeMask & SFNT_TTF) != 0 ) commit fb107f15b28cdba3e7a92d10cb44d85d6c933743 Author: Caolán McNamara <caol...@redhat.com> Date: Wed Feb 8 09:45:31 2017 +0000 coverity#1242486 Out-of-bounds access Change-Id: I24d73edd90a7fbfe63dd70a1784fb2276ceb079b diff --git a/desktop/unx/source/start.c b/desktop/unx/source/start.c index 7ae5ad4..d191b48 100644 --- a/desktop/unx/source/start.c +++ b/desktop/unx/source/start.c @@ -478,7 +478,7 @@ send_args( int fd, rtl_uString *pCwdPath ) if ( bResult ) { - char resp[ strlen( "InternalIPC::ProcessingDone" ) ]; + char resp[SAL_N_ELEMENTS("InternalIPC::ProcessingDone")]; ssize_t n = read( fd, resp, SAL_N_ELEMENTS( resp ) ); bResult = n == (ssize_t) SAL_N_ELEMENTS( resp ) && (memcmp( commit 27a673ac52e02f921ae78d409d0becc85bb7f602 Author: Caolán McNamara <caol...@redhat.com> Date: Wed Feb 8 09:41:34 2017 +0000 coverity#1371289 Missing move assignment operator Change-Id: Idc26faf904f0c89cfd66f53bb311d8ce9b41eaab diff --git a/i18nutil/source/utility/unicode.cxx b/i18nutil/source/utility/unicode.cxx index 61ce7c0..5d8a70a 100644 --- a/i18nutil/source/utility/unicode.cxx +++ b/i18nutil/source/utility/unicode.cxx @@ -1198,7 +1198,7 @@ OUString ToggleUnicodeCodepoint::StringToReplace() //if U+ notation used, strip off all extra chars added not in U+ notation if( nUPlus != -1 ) { - maInput = maInput.copy(nUPlus); + maInput.remove(0, nUPlus); sIn = maInput.copy(2).toString(); nUPlus = sIn.indexOf("U+"); } diff --git a/shell/source/backends/desktopbe/desktopbackend.cxx b/shell/source/backends/desktopbe/desktopbackend.cxx index 42bc6a8..e6d160f 100644 --- a/shell/source/backends/desktopbe/desktopbackend.cxx +++ b/shell/source/backends/desktopbe/desktopbackend.cxx @@ -198,7 +198,7 @@ OUString xdg_user_dir_lookup (const char *type) continue; if (relative) { - aUserDirBuf = OUStringBuffer(aHomeDirURL + "/"); + aUserDirBuf = aHomeDirURL + "/"; } else { diff --git a/vcl/source/control/field2.cxx b/vcl/source/control/field2.cxx index a2c740b..9fa9259 100644 --- a/vcl/source/control/field2.cxx +++ b/vcl/source/control/field2.cxx @@ -1963,8 +1963,11 @@ static bool ImplIsValidTimePortion( bool _bSkipInvalidCharacters, const OUString static bool ImplCutTimePortion( OUStringBuffer& _rStr, sal_Int32 _nSepPos, bool _bSkipInvalidCharacters, short* _pPortion ) { OUString sPortion(_rStr.getStr(), _nSepPos ); - _rStr = _nSepPos < _rStr.getLength() - ? _rStr.copy( _nSepPos + 1 ) : OUStringBuffer(); + + if (_nSepPos < _rStr.getLength()) + _rStr = _rStr.copy(_nSepPos + 1); + else + _rStr.truncate(); if ( !ImplIsValidTimePortion( _bSkipInvalidCharacters, sPortion ) ) return false; diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx index fc4e302..46eb2bd 100644 --- a/vcl/source/outdev/text.cxx +++ b/vcl/source/outdev/text.cxx @@ -1962,7 +1962,7 @@ OUString OutputDevice::ImplGetEllipsisString( const OutputDevice& rTargetDevice, sal_Int32 nEraseChars = std::max<sal_Int32>(4, aStr.getLength() - (nIndex*4)/3); while( nEraseChars < aStr.getLength() && _rLayout.GetTextWidth( aTmpStr.toString(), 0, aTmpStr.getLength() ) > nMaxWidth ) { - aTmpStr = OUStringBuffer(aStr); + aTmpStr = aStr; sal_Int32 i = (aTmpStr.getLength() - nEraseChars)/2; aTmpStr.remove(i, nEraseChars++); aTmpStr.insert(i, "..."); commit 193ec57c899c6941675a86b7a24d6af60e410938 Author: Caolán McNamara <caol...@redhat.com> Date: Wed Feb 8 09:27:06 2017 +0000 coverity#1400143 Missing move assignment operator by using a vector and let the defaults kick in Change-Id: I84e6144ab4beeeb316ccb830e7be55e35d942062 diff --git a/include/vcl/salbtype.hxx b/include/vcl/salbtype.hxx index ca5993b..e395f0c 100644 --- a/include/vcl/salbtype.hxx +++ b/include/vcl/salbtype.hxx @@ -20,8 +20,6 @@ #ifndef INCLUDED_VCL_SALBTYPE_HXX #define INCLUDED_VCL_SALBTYPE_HXX -#include <string.h> -#include <stdlib.h> #include <tools/debug.hxx> #include <vcl/checksum.hxx> #include <vcl/salgtype.hxx> @@ -30,6 +28,7 @@ #include <tools/solar.h> #include <vcl/dllapi.h> #include <o3tl/typed_flags_set.hxx> +#include <vector> typedef sal_uInt8* Scanline; typedef const sal_uInt8* ConstScanline; @@ -92,9 +91,6 @@ class VCL_DLLPUBLIC BitmapColor { private: -// ATTENTION: -// Because the members of this class are accessed via memcpy, -// you MUST NOT CHANGE the order of the members or the size of this class! sal_uInt8 mcBlueOrIndex; sal_uInt8 mcGreen; sal_uInt8 mcRed; @@ -153,38 +149,103 @@ class VCL_DLLPUBLIC BitmapPalette private: - BitmapColor* mpBitmapColor; - sal_uInt16 mnCount; + std::vector<BitmapColor> maBitmapColor; public: - SAL_DLLPRIVATE inline BitmapColor* ImplGetColorBuffer() const; + SAL_DLLPRIVATE const BitmapColor* ImplGetColorBuffer() const + { + return maBitmapColor.data(); + } + + SAL_DLLPRIVATE BitmapColor* ImplGetColorBuffer() + { + return maBitmapColor.data(); + } BitmapChecksum GetChecksum() const { - return vcl_get_checksum(0, mpBitmapColor, mnCount * sizeof(BitmapColor)); + return vcl_get_checksum(0, maBitmapColor.data(), maBitmapColor.size() * sizeof(BitmapColor)); } public: - inline BitmapPalette(); - inline BitmapPalette( const BitmapPalette& rBitmapPalette ); - inline BitmapPalette( sal_uInt16 nCount ); - inline ~BitmapPalette(); + BitmapPalette() + { + } + + BitmapPalette(sal_uInt16 nCount) + : maBitmapColor(nCount) + { + } + + bool operator==( const BitmapPalette& rBitmapPalette ) const + { + return maBitmapColor == rBitmapPalette.maBitmapColor; + } + + bool operator!=(const BitmapPalette& rBitmapPalette) const + { + return !( *this == rBitmapPalette ); + } + + bool operator!() + { + return maBitmapColor.empty(); + } + + sal_uInt16 GetEntryCount() const + { + return maBitmapColor.size(); + } + + void SetEntryCount(sal_uInt16 nCount) + { + maBitmapColor.resize(nCount); + } + + const BitmapColor& operator[](sal_uInt16 nIndex) const + { + assert(nIndex < maBitmapColor.size() && "Palette index is out of range"); + return maBitmapColor[nIndex]; + } + + BitmapColor& operator[](sal_uInt16 nIndex) + { + assert(nIndex < maBitmapColor.size() && "Palette index is out of range"); + return maBitmapColor[nIndex]; + } - inline BitmapPalette& operator=( const BitmapPalette& rBitmapPalette ); - inline bool operator==( const BitmapPalette& rBitmapPalette ) const; - inline bool operator!=( const BitmapPalette& rBitmapPalette ) const; - inline bool operator!(); + sal_uInt16 GetBestIndex(const BitmapColor& rCol) const + { + sal_uInt16 nRetIndex = 0; - inline sal_uInt16 GetEntryCount() const; - inline void SetEntryCount( sal_uInt16 nCount ); + if (!maBitmapColor.empty()) + { + for (size_t j = 0; j < maBitmapColor.size(); ++j) + { + if (rCol == maBitmapColor[j]) + { + return j; + } + } - inline const BitmapColor& operator[]( sal_uInt16 nIndex ) const; - inline BitmapColor& operator[]( sal_uInt16 nIndex ); + sal_uInt16 nLastErr = SAL_MAX_UINT16; + for (size_t i = 0; i < maBitmapColor.size(); ++i) + { + const sal_uInt16 nActErr = rCol.GetColorError(maBitmapColor[i]); + if ( nActErr < nLastErr ) + { + nLastErr = nActErr; + nRetIndex = i; + } + } + } + + return nRetIndex; + } - inline sal_uInt16 GetBestIndex( const BitmapColor& rCol ) const; - bool IsGreyPalette() const; + bool IsGreyPalette() const; }; struct VCL_DLLPUBLIC ColorMaskElement @@ -439,164 +500,6 @@ inline sal_uInt16 BitmapColor::GetColorError( const BitmapColor& rBitmapColor ) abs( static_cast<int>(mcRed) - static_cast<int>(rBitmapColor.mcRed) ) ); } -inline BitmapPalette::BitmapPalette() : - mpBitmapColor ( nullptr ), - mnCount ( 0 ) -{ -} - -inline BitmapPalette::BitmapPalette( const BitmapPalette& rBitmapPalette ) : - mnCount( rBitmapPalette.mnCount ) -{ - if( mnCount ) - { - const size_t nSize = mnCount * sizeof( BitmapColor ); - mpBitmapColor = reinterpret_cast<BitmapColor*>(new sal_uInt8[ nSize ]); - memcpy( mpBitmapColor, rBitmapPalette.mpBitmapColor, nSize ); - } - else - mpBitmapColor = nullptr; -} - -inline BitmapPalette::BitmapPalette( sal_uInt16 nCount ) : - mnCount( nCount ) -{ - if( mnCount ) - { - const size_t nSize = mnCount * sizeof( BitmapColor ); - mpBitmapColor = reinterpret_cast<BitmapColor*>(new sal_uInt8[ nSize ]); - memset( mpBitmapColor, 0, nSize ); - } - else - mpBitmapColor = nullptr; -} - -inline BitmapPalette::~BitmapPalette() -{ - delete[] reinterpret_cast<sal_uInt8*>(mpBitmapColor); -} - -inline BitmapPalette& BitmapPalette::operator=( const BitmapPalette& rBitmapPalette ) -{ - delete[] reinterpret_cast<sal_uInt8*>(mpBitmapColor); - mnCount = rBitmapPalette.mnCount; - - if( mnCount ) - { - const size_t nSize = mnCount * sizeof( BitmapColor ); - mpBitmapColor = reinterpret_cast<BitmapColor*>(new sal_uInt8[ nSize ]); - memcpy( mpBitmapColor, rBitmapPalette.mpBitmapColor, nSize ); - } - else - mpBitmapColor = nullptr; - - return *this; -} - -inline bool BitmapPalette::operator==( const BitmapPalette& rBitmapPalette ) const -{ - bool bRet = false; - - if( rBitmapPalette.mnCount == mnCount ) - { - bRet = true; - - for( sal_uInt16 i = 0; i < mnCount; i++ ) - { - if( mpBitmapColor[ i ] != rBitmapPalette.mpBitmapColor[ i ] ) - { - bRet = false; - break; - } - } - } - - return bRet; -} - -inline bool BitmapPalette::operator!=( const BitmapPalette& rBitmapPalette ) const -{ - return !( *this == rBitmapPalette ); -} - -inline bool BitmapPalette::operator!() -{ - return( !mnCount || !mpBitmapColor ); -} - -inline sal_uInt16 BitmapPalette::GetEntryCount() const -{ - return mnCount; -} - -inline void BitmapPalette::SetEntryCount( sal_uInt16 nCount ) -{ - if( !nCount ) - { - delete[] reinterpret_cast<sal_uInt8*>(mpBitmapColor); - mpBitmapColor = nullptr; - mnCount = 0; - } - else if( nCount != mnCount ) - { - const size_t nNewSize = nCount * sizeof( BitmapColor ); - const size_t nMinSize = std::min( mnCount, nCount ) * sizeof( BitmapColor ); - sal_uInt8* pNewColor = new sal_uInt8[ nNewSize ]; - - if ( nMinSize && mpBitmapColor ) - memcpy( pNewColor, mpBitmapColor, nMinSize ); - delete[] reinterpret_cast<sal_uInt8*>(mpBitmapColor); - memset( pNewColor + nMinSize, 0, nNewSize - nMinSize ); - mpBitmapColor = reinterpret_cast<BitmapColor*>(pNewColor); - mnCount = nCount; - } -} - -inline const BitmapColor& BitmapPalette::operator[]( sal_uInt16 nIndex ) const -{ - assert( nIndex < mnCount && "Palette index is out of range" ); - return mpBitmapColor[ nIndex ]; -} - -inline BitmapColor& BitmapPalette::operator[]( sal_uInt16 nIndex ) -{ - assert( nIndex < mnCount && "Palette index is out of range" ); - return mpBitmapColor[ nIndex ]; -} - -inline BitmapColor* BitmapPalette::ImplGetColorBuffer() const -{ - assert( mpBitmapColor && "No color buffer available" ); - return mpBitmapColor; -} - -inline sal_uInt16 BitmapPalette::GetBestIndex( const BitmapColor& rCol ) const -{ - sal_uInt16 nRetIndex = 0; - - if( mpBitmapColor && mnCount ) - { - for( sal_uInt16 j = 0; j < mnCount; ++j ) - if( rCol == mpBitmapColor[ j ] ) - { - return j; - } - - sal_uInt16 nLastErr = SAL_MAX_UINT16; - for( sal_uInt16 i = 0; i < mnCount; ++i ) - { - const sal_uInt16 nActErr = rCol.GetColorError( mpBitmapColor[ i ] ); - if ( nActErr < nLastErr ) - { - nLastErr = nActErr; - nRetIndex = i; - } - } - } - - return nRetIndex; -} - inline sal_uInt32 ColorMask::GetRedMask() const { return maR.mnMask; diff --git a/vcl/source/gdi/bitmap.cxx b/vcl/source/gdi/bitmap.cxx index 16aa9adf..2ace729 100644 --- a/vcl/source/gdi/bitmap.cxx +++ b/vcl/source/gdi/bitmap.cxx @@ -210,8 +210,8 @@ bool BitmapPalette::IsGreyPalette() const // TODO: is it worth to compare the entries for the general case? if (nEntryCount == 2) { - const BitmapColor& rCol0(mpBitmapColor[0]); - const BitmapColor& rCol1(mpBitmapColor[1]); + const BitmapColor& rCol0(maBitmapColor[0]); + const BitmapColor& rCol1(maBitmapColor[1]); bRet = rCol0.GetRed() == rCol0.GetGreen() && rCol0.GetRed() == rCol0.GetBlue() && rCol1.GetRed() == rCol1.GetGreen() && rCol1.GetRed() == rCol1.GetBlue(); } commit d8baaf43b0a5f384c35ea4a7a8cac7ede7d0fb90 Author: Caolán McNamara <caol...@redhat.com> Date: Wed Feb 8 09:00:16 2017 +0000 coverity#1400144 Uninitialized pointer field Change-Id: Ie7031679c60b70eb8a79062cdd0353c3da1550e4 diff --git a/vcl/inc/unx/i18n_cb.hxx b/vcl/inc/unx/i18n_cb.hxx index a63905d..ceaf53e 100644 --- a/vcl/inc/unx/i18n_cb.hxx +++ b/vcl/inc/unx/i18n_cb.hxx @@ -46,13 +46,22 @@ Bool IsControlCode(sal_Unicode nChar); } /* extern "C" */ -typedef struct { - sal_Unicode *pUnicodeBuffer; - XIMFeedback *pCharStyle; - unsigned int nCursorPos; - unsigned int nLength; - unsigned int nSize; -} preedit_text_t; +struct preedit_text_t +{ + sal_Unicode *pUnicodeBuffer; + XIMFeedback *pCharStyle; + unsigned int nCursorPos; + unsigned int nLength; + unsigned int nSize; + preedit_text_t() + : pUnicodeBuffer(nullptr) + , pCharStyle(nullptr) + , nCursorPos(0) + , nLength(0) + , nSize(0) + { + } +}; class SalFrame; @@ -63,14 +72,18 @@ enum class PreeditStatus { StartPending }; -struct preedit_data_t { +struct preedit_data_t +{ SalFrame* pFrame; PreeditStatus eState; preedit_text_t aText; SalExtTextInputEvent aInputEv; std::vector< ExtTextInputAttr > aInputFlags; - - preedit_data_t() : eState(PreeditStatus::DontKnow) {} + preedit_data_t() + : pFrame(nullptr) + , eState(PreeditStatus::DontKnow) + { + } }; #endif // INCLUDED_VCL_INC_UNX_I18N_CB_HXX commit 1428e9e0ab5a54f5f68c92748cfe29fee864b73a Author: Caolán McNamara <caol...@redhat.com> Date: Wed Feb 8 08:55:53 2017 +0000 coverity#1400141 Unchecked return value Change-Id: I69f99910bb5748e8e182639387fa3cdbc04b5589 diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index 97ffab7..5f3ae62 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -2691,7 +2691,7 @@ void ScDocument::CopyNonFilteredFromClip( { // look for more non-filtered rows following SCROW nLastRow = nSourceRow; - rCxt.getClipDoc()->RowFiltered(nSourceRow, nFlagTab, nullptr, &nLastRow); + (void)rCxt.getClipDoc()->RowFiltered(nSourceRow, nFlagTab, nullptr, &nLastRow); SCROW nFollow = nLastRow - nSourceRow; if (nFollow > nSourceEnd - nSourceRow) commit 0008b7564af7ccca432ddb0eb0afccf1c8a7ea2b Author: Caolán McNamara <caol...@redhat.com> Date: Wed Feb 8 08:53:39 2017 +0000 coverity#1400142 Dereference after null check Change-Id: Ifdb77761a6d8a6dbcbb8f59c84734f767fe0dfaf diff --git a/vcl/source/control/edit.cxx b/vcl/source/control/edit.cxx index 63e9a70..9490014 100644 --- a/vcl/source/control/edit.cxx +++ b/vcl/source/control/edit.cxx @@ -2026,7 +2026,7 @@ void Edit::Command( const CommandEvent& rCEvt ) { ImplSetSelection( Selection( 0, maText.getLength() ) ); } - else if (sCommand == "specialchar") + else if (sCommand == "specialchar" && pImplFncGetSpecialChars) { OUString aChars = pImplFncGetSpecialChars( this, GetFont() ); SetSelection( aSaveSel );
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits