diff --git a/0001-rhbz-1699347-__glibcxx_requires_subscript-enabled-in.patch b/0001-rhbz-1699347-__glibcxx_requires_subscript-enabled-in.patch new file mode 100644 index 0000000..fa3e509 --- /dev/null +++ b/0001-rhbz-1699347-__glibcxx_requires_subscript-enabled-in.patch @@ -0,0 +1,400 @@ +From 42851fa1e6a0a9e117d73b53456f01c6ddf470b3 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Fri, 12 Apr 2019 15:59:02 +0100 +Subject: [PATCH] rhbz#1699347 __glibcxx_requires_subscript enabled in fedora + release builds + +and so triggering a crash and exit on trying to get address of 0th element of a +0 len vector + +Change-Id: I205478b6c2878d3758d91812db46fe8ad58e37df +--- + sw/source/filter/ww8/rtfsdrexport.cxx | 6 +++--- + sw/source/filter/ww8/wrtww8.cxx | 6 +++--- + sw/source/filter/ww8/ww8par2.cxx | 2 +- + sw/source/filter/ww8/ww8par3.cxx | 2 +- + sw/source/filter/ww8/ww8scan.cxx | 2 +- + sw/source/uibase/docvw/edtwin.cxx | 2 +- + vcl/source/gdi/pdfwriter_impl.cxx | 10 ++++----- + vcl/source/gdi/pdfwriter_impl2.cxx | 24 ++++++++++----------- + vcl/source/opengl/OpenGLHelper.cxx | 6 +++--- + vcl/unx/generic/fontmanager/fontmanager.cxx | 2 +- + vcl/unx/generic/gdi/gdiimpl.cxx | 6 +++--- + vcl/unx/generic/print/glyphset.cxx | 2 +- + vcl/unx/generic/window/salframe.cxx | 2 +- + vcl/unx/gtk/gtksalframe.cxx | 4 ++-- + vcl/unx/gtk3/gtk3gtkframe.cxx | 4 ++-- + 15 files changed, 40 insertions(+), 40 deletions(-) + +diff --git a/sw/source/filter/ww8/rtfsdrexport.cxx b/sw/source/filter/ww8/rtfsdrexport.cxx +index e8ac4018c3a9..67136300fe9d 100644 +--- a/sw/source/filter/ww8/rtfsdrexport.cxx ++++ b/sw/source/filter/ww8/rtfsdrexport.cxx +@@ -274,9 +274,9 @@ void RtfSdrExport::Commit(EscherPropertyContainer& rProps, const tools::Rectangl + && rProps.GetOpt(ESCHER_Prop_pSegmentInfo, aSegments) + && aVertices.nProp.size() >= 6 && aSegments.nProp.size() >= 6) + { +- const sal_uInt8* pVerticesIt = &aVertices.nProp[0] + 6; ++ const sal_uInt8* pVerticesIt = aVertices.nProp.data() + 6; + std::size_t nVerticesPos = 6; +- const sal_uInt8* pSegmentIt = &aSegments.nProp[0]; ++ const sal_uInt8* pSegmentIt = aSegments.nProp.data(); + + OStringBuffer aSegmentInfo(512); + OStringBuffer aVerticies(512); +@@ -434,7 +434,7 @@ void RtfSdrExport::Commit(EscherPropertyContainer& rProps, const tools::Rectangl + .append(SAL_NEWLINE_STRING); + int nHeaderSize + = 25; // The first bytes are WW8-specific, we're only interested in the PNG +- aBuf.append(msfilter::rtfutil::WriteHex(&rOpt.nProp[0] + nHeaderSize, ++ aBuf.append(msfilter::rtfutil::WriteHex(rOpt.nProp.data() + nHeaderSize, + rOpt.nProp.size() - nHeaderSize)); + aBuf.append('}'); + m_aShapeProps.insert( +diff --git a/sw/source/filter/ww8/wrtww8.cxx b/sw/source/filter/ww8/wrtww8.cxx +index fe326ab9c822..0caff45e32da 100644 +--- a/sw/source/filter/ww8/wrtww8.cxx ++++ b/sw/source/filter/ww8/wrtww8.cxx +@@ -1775,7 +1775,7 @@ void SwWW8Writer::WriteString16(SvStream& rStrm, const OUString& rStr, + //vectors are guaranteed to have contiguous memory, so we can do + //this while migrating away from WW8Bytes. Meyers Effective STL, item 16 + if (!aBytes.empty()) +- rStrm.WriteBytes(&aBytes[0], aBytes.size()); ++ rStrm.WriteBytes(aBytes.data(), aBytes.size()); + } + + void SwWW8Writer::WriteString_xstz(SvStream& rStrm, const OUString& rStr, bool bAddZero) +@@ -1785,7 +1785,7 @@ void SwWW8Writer::WriteString_xstz(SvStream& rStrm, const OUString& rStr, bool b + SwWW8Writer::InsAsString16(aBytes, rStr); + if (bAddZero) + SwWW8Writer::InsUInt16(aBytes, 0); +- rStrm.WriteBytes(&aBytes[0], aBytes.size()); ++ rStrm.WriteBytes(aBytes.data(), aBytes.size()); + } + + void SwWW8Writer::WriteString8(SvStream& rStrm, const OUString& rStr, +@@ -1798,7 +1798,7 @@ void SwWW8Writer::WriteString8(SvStream& rStrm, const OUString& rStr, + //vectors are guaranteed to have contiguous memory, so we can do + ////this while migrating away from WW8Bytes. Meyers Effective STL, item 16 + if (!aBytes.empty()) +- rStrm.WriteBytes(&aBytes[0], aBytes.size()); ++ rStrm.WriteBytes(aBytes.data(), aBytes.size()); + } + + void WW8Export::WriteStringAsPara( const OUString& rText ) +diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx +index f123fb2d207f..0ee79ab2a7d4 100644 +--- a/sw/source/filter/ww8/ww8par2.cxx ++++ b/sw/source/filter/ww8/ww8par2.cxx +@@ -4474,7 +4474,7 @@ void WW8RStyle::ImportOldFormatStyles() + true); + + if (!aConvertedChpx[stcp].empty()) +- ImportSprms(&(aConvertedChpx[stcp][0]), ++ ImportSprms(aConvertedChpx[stcp].data(), + static_cast< short >(aConvertedChpx[stcp].size()), + false); + +diff --git a/sw/source/filter/ww8/ww8par3.cxx b/sw/source/filter/ww8/ww8par3.cxx +index 012755119be2..23309ff5f208 100644 +--- a/sw/source/filter/ww8/ww8par3.cxx ++++ b/sw/source/filter/ww8/ww8par3.cxx +@@ -1877,7 +1877,7 @@ void SwWW8ImplReader::RegisterNumFormatOnTextNode(sal_uInt16 nCurrentLFO, + { + std::unique_ptr xOldCurrentItemSet(SetCurrentItemSet(std::move(xListIndent))); + +- sal_uInt8* pSprms1 = &aParaSprms[0]; ++ sal_uInt8* pSprms1 = aParaSprms.data(); + while (0 < nLen) + { + sal_uInt16 nL1 = ImportSprm(pSprms1, nLen); +diff --git a/sw/source/filter/ww8/ww8scan.cxx b/sw/source/filter/ww8/ww8scan.cxx +index 643601e144e3..e65d8a920a1f 100644 +--- a/sw/source/filter/ww8/ww8scan.cxx ++++ b/sw/source/filter/ww8/ww8scan.cxx +@@ -2679,7 +2679,7 @@ WW8PLCFx_Fc_FKP::WW8Fkp::WW8Fkp(const WW8Fib& rFib, SvStream* pSt, + if (aEntry.mnLen) + { + aEntry.mpData = new sal_uInt8[aEntry.mnLen]; +- memcpy(aEntry.mpData, &(aSprms[0]), aEntry.mnLen); ++ memcpy(aEntry.mpData, aSprms.data(), aEntry.mnLen); + aEntry.mbMustDelete = true; + } + } +diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx +index 2e9f77b1a063..4ccbd77d9c1c 100644 +--- a/sw/source/uibase/docvw/edtwin.cxx ++++ b/sw/source/uibase/docvw/edtwin.cxx +@@ -5870,7 +5870,7 @@ void QuickHelpData::Start( SwWrtShell& rSh, sal_uInt16 nWrdLen ) + const ExtTextInputAttr nVal = ExtTextInputAttr::DottedUnderline | + ExtTextInputAttr::Highlight; + const std::vector aAttrs( nL, nVal ); +- CommandExtTextInputData aCETID( sStr, &aAttrs[0], nL, ++ CommandExtTextInputData aCETID( sStr, aAttrs.data(), nL, + 0, false ); + + //fdo#33092. If the current input language is the default +diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx +index ed542157340b..9eab07cc0fb6 100644 +--- a/vcl/source/gdi/pdfwriter_impl.cxx ++++ b/vcl/source/gdi/pdfwriter_impl.cxx +@@ -3324,7 +3324,7 @@ bool PDFWriterImpl::emitFonts() + sal_Int32 nFontDescriptor = emitFontDescriptor( subset.first, aSubsetInfo, s_subset.m_nFontID, nFontStream ); + + if( nToUnicodeStream ) +- nToUnicodeStream = createToUnicodeCMap( pEncoding, &aCodeUnits[0], pCodeUnitsPerGlyph, pEncToUnicodeIndex, nGlyphs ); ++ nToUnicodeStream = createToUnicodeCMap( pEncoding, aCodeUnits.data(), pCodeUnitsPerGlyph, pEncToUnicodeIndex, nGlyphs ); + + sal_Int32 nFontObject = createObject(); + if ( !updateObject( nFontObject ) ) return false; +@@ -5529,9 +5529,9 @@ sal_Int32 PDFWriterImpl::emitOutputIntent() + if (!nBytesNeeded) + return 0; + std::vector aBuffer(nBytesNeeded); +- cmsSaveProfileToMem(hProfile, &aBuffer[0], &nBytesNeeded); ++ cmsSaveProfileToMem(hProfile, aBuffer.data(), &nBytesNeeded); + cmsCloseProfile(hProfile); +- bool written = writeBuffer( &aBuffer[0], static_cast(aBuffer.size()) ); ++ bool written = writeBuffer( aBuffer.data(), static_cast(aBuffer.size()) ); + disableStreamEncryption(); + endCompression(); + sal_uInt64 nEndStreamPos = 0; +@@ -5781,9 +5781,9 @@ bool PDFWriterImpl::emitTrailer() + + // emit the owner password, must not be encrypted + aLineS.append( "/O(" ); +- appendLiteralString( reinterpret_cast(&m_aContext.Encryption.OValue[0]), sal_Int32(m_aContext.Encryption.OValue.size()), aLineS ); ++ appendLiteralString( reinterpret_cast(m_aContext.Encryption.OValue.data()), sal_Int32(m_aContext.Encryption.OValue.size()), aLineS ); + aLineS.append( ")/U(" ); +- appendLiteralString( reinterpret_cast(&m_aContext.Encryption.UValue[0]), sal_Int32(m_aContext.Encryption.UValue.size()), aLineS ); ++ appendLiteralString( reinterpret_cast(m_aContext.Encryption.UValue.data()), sal_Int32(m_aContext.Encryption.UValue.size()), aLineS ); + aLineS.append( ")/P " );// the permission set + aLineS.append( m_nAccessPermissions ); + aLineS.append( ">>\nendobj\n\n" ); +diff --git a/vcl/source/gdi/pdfwriter_impl2.cxx b/vcl/source/gdi/pdfwriter_impl2.cxx +index 82f99a33cd00..2cf35ba666a6 100644 +--- a/vcl/source/gdi/pdfwriter_impl2.cxx ++++ b/vcl/source/gdi/pdfwriter_impl2.cxx +@@ -1161,7 +1161,7 @@ void PDFWriterImpl::checkAndEnableStreamEncryption( sal_Int32 nObject ) + // the other location of m_nEncryptionKey is already set to 0, our fixed generation number + // do the MD5 hash + ::std::vector const nMD5Sum(::comphelper::Hash::calculateHash( +- &m_aContext.Encryption.EncryptionKey[0], i+2, ::comphelper::HashType::MD5)); ++ m_aContext.Encryption.EncryptionKey.data(), i+2, ::comphelper::HashType::MD5)); + // the i+2 to take into account the generation number, always zero + // initialize the RC4 with the key + // key length: see algorithm 3.1, step 4: (N+5) max 16 +@@ -1181,7 +1181,7 @@ void PDFWriterImpl::enableStringEncryption( sal_Int32 nObject ) + // do the MD5 hash + // the i+2 to take into account the generation number, always zero + ::std::vector const nMD5Sum(::comphelper::Hash::calculateHash( +- &m_aContext.Encryption.EncryptionKey[0], i+2, ::comphelper::HashType::MD5)); ++ m_aContext.Encryption.EncryptionKey.data(), i+2, ::comphelper::HashType::MD5)); + // initialize the RC4 with the key + // key length: see algorithm 3.1, step 4: (N+5) max 16 + rtl_cipher_initARCFOUR( m_aCipher, rtl_Cipher_DirectionEncode, nMD5Sum.data(), m_nRC4KeyLength, nullptr, 0 ); +@@ -1312,7 +1312,7 @@ bool PDFWriterImpl::computeEncryptionKey( EncHashTransporter* i_pTransporter, vc + { + //step 3 + if( ! io_rProperties.OValue.empty() ) +- pDigest->update(&io_rProperties.OValue[0], io_rProperties.OValue.size()); ++ pDigest->update(io_rProperties.OValue.data(), io_rProperties.OValue.size()); + else + bSuccess = false; + //Step 4 +@@ -1326,7 +1326,7 @@ bool PDFWriterImpl::computeEncryptionKey( EncHashTransporter* i_pTransporter, vc + pDigest->update(nPerm, sizeof(nPerm)); + + //step 5, get the document ID, binary form +- pDigest->update(&io_rProperties.DocumentIdentifier[0], io_rProperties.DocumentIdentifier.size()); ++ pDigest->update(io_rProperties.DocumentIdentifier.data(), io_rProperties.DocumentIdentifier.size()); + //get the digest + nMD5Sum = pDigest->finalize(); + +@@ -1394,7 +1394,7 @@ bool PDFWriterImpl::computeODictionaryValue( const sal_uInt8* i_pPaddedOwnerPass + { + // encrypt the user password using the key set above + rtl_cipher_encodeARCFOUR( aCipher, i_pPaddedUserPassword, ENCRYPTED_PWD_SIZE, // the data to be encrypted +- &io_rOValue[0], sal_Int32(io_rOValue.size()) ); //encrypted data ++ io_rOValue.data(), sal_Int32(io_rOValue.size()) ); //encrypted data + //Step 7, only if 128 bit + if( i_nKeyLength == SECUR_128BIT_KEY ) + { +@@ -1414,8 +1414,8 @@ bool PDFWriterImpl::computeODictionaryValue( const sal_uInt8* i_pPaddedOwnerPass + bSuccess = false; + break; + } +- rtl_cipher_encodeARCFOUR( aCipher, &io_rOValue[0], sal_Int32(io_rOValue.size()), // the data to be encrypted +- &io_rOValue[0], sal_Int32(io_rOValue.size()) ); // encrypted data, can be the same as the input, encrypt "in place" ++ rtl_cipher_encodeARCFOUR( aCipher, io_rOValue.data(), sal_Int32(io_rOValue.size()), // the data to be encrypted ++ io_rOValue.data(), sal_Int32(io_rOValue.size()) ); // encrypted data, can be the same as the input, encrypt "in place" + //step 8, store in class data member + } + } +@@ -1464,14 +1464,14 @@ bool PDFWriterImpl::computeUDictionaryValue( EncHashTransporter* i_pTransporter, + io_rProperties.UValue[i] = 0; + //steps 2 and 3 + aDigest.update(s_nPadString, sizeof(s_nPadString)); +- aDigest.update(&io_rProperties.DocumentIdentifier[0], io_rProperties.DocumentIdentifier.size()); ++ aDigest.update(io_rProperties.DocumentIdentifier.data(), io_rProperties.DocumentIdentifier.size()); + + ::std::vector const nMD5Sum(aDigest.finalize()); + //Step 4 + rtl_cipher_initARCFOUR( aCipher, rtl_Cipher_DirectionEncode, +- &io_rProperties.EncryptionKey[0], SECUR_128BIT_KEY, nullptr, 0 ); //destination data area ++ io_rProperties.EncryptionKey.data(), SECUR_128BIT_KEY, nullptr, 0 ); //destination data area + rtl_cipher_encodeARCFOUR( aCipher, nMD5Sum.data(), nMD5Sum.size(), // the data to be encrypted +- &io_rProperties.UValue[0], SECUR_128BIT_KEY ); //encrypted data, stored in class data member ++ io_rProperties.UValue.data(), SECUR_128BIT_KEY ); //encrypted data, stored in class data member + //step 5 + sal_uInt32 i; + size_t y; +@@ -1485,8 +1485,8 @@ bool PDFWriterImpl::computeUDictionaryValue( EncHashTransporter* i_pTransporter, + rtl_cipher_initARCFOUR( aCipher, rtl_Cipher_DirectionEncode, + nLocalKey, SECUR_128BIT_KEY, // key and key length + nullptr, 0 ); //destination data area, on init can be NULL +- rtl_cipher_encodeARCFOUR( aCipher, &io_rProperties.UValue[0], SECUR_128BIT_KEY, // the data to be encrypted +- &io_rProperties.UValue[0], SECUR_128BIT_KEY ); // encrypted data, can be the same as the input, encrypt "in place" ++ rtl_cipher_encodeARCFOUR( aCipher, io_rProperties.UValue.data(), SECUR_128BIT_KEY, // the data to be encrypted ++ io_rProperties.UValue.data(), SECUR_128BIT_KEY ); // encrypted data, can be the same as the input, encrypt "in place" + } + } + else +diff --git a/vcl/source/opengl/OpenGLHelper.cxx b/vcl/source/opengl/OpenGLHelper.cxx +index 6ae47184ae2e..a3579b579502 100644 +--- a/vcl/source/opengl/OpenGLHelper.cxx ++++ b/vcl/source/opengl/OpenGLHelper.cxx +@@ -124,13 +124,13 @@ namespace { + { + std::vector ErrorMessage(InfoLogLength+1); + if (bShaderNotProgram) +- glGetShaderInfoLog (nId, InfoLogLength, nullptr, &ErrorMessage[0]); ++ glGetShaderInfoLog (nId, InfoLogLength, nullptr, ErrorMessage.data()); + else +- glGetProgramInfoLog(nId, InfoLogLength, nullptr, &ErrorMessage[0]); ++ glGetProgramInfoLog(nId, InfoLogLength, nullptr, ErrorMessage.data()); + CHECK_GL_ERROR(); + + ErrorMessage.push_back('\0'); +- SAL_WARN("vcl.opengl", rDetail << " shader " << nId << " compile for " << rName << " failed : " << &ErrorMessage[0]); ++ SAL_WARN("vcl.opengl", rDetail << " shader " << nId << " compile for " << rName << " failed : " << ErrorMessage.data()); + } + else + SAL_WARN("vcl.opengl", rDetail << " shader: " << rName << " compile " << nId << " failed without error log"); +diff --git a/vcl/unx/generic/fontmanager/fontmanager.cxx b/vcl/unx/generic/fontmanager/fontmanager.cxx +index 394c5484a5bd..0a093b641270 100644 +--- a/vcl/unx/generic/fontmanager/fontmanager.cxx ++++ b/vcl/unx/generic/fontmanager/fontmanager.cxx +@@ -1108,7 +1108,7 @@ void PrintFontManager::getGlyphWidths( fontID nFont, + for (int i = 0; i < nGlyphs; i++) + aGlyphIds[i] = sal_uInt16(i); + std::unique_ptr pMetrics = GetTTSimpleGlyphMetrics(pTTFont, +- &aGlyphIds[0], ++ aGlyphIds.data(), + nGlyphs, + bVertical); + if (pMetrics) +diff --git a/vcl/unx/generic/gdi/gdiimpl.cxx b/vcl/unx/generic/gdi/gdiimpl.cxx +index e0a4879ff6fb..2ff75dba8f3a 100644 +--- a/vcl/unx/generic/gdi/gdiimpl.cxx ++++ b/vcl/unx/generic/gdi/gdiimpl.cxx +@@ -1489,7 +1489,7 @@ bool X11SalGraphicsImpl::drawPolyPolygon( + const int nTrapCount = aB2DTrapVector.size(); + if( !nTrapCount ) + return true; +- const bool bDrawn = drawFilledTrapezoids( &aB2DTrapVector[0], nTrapCount, fTransparency ); ++ const bool bDrawn = drawFilledTrapezoids( aB2DTrapVector.data(), nTrapCount, fTransparency ); + return bDrawn; + } + +@@ -1565,7 +1565,7 @@ bool X11SalGraphicsImpl::drawFilledTrapezoids( const basegfx::B2DTrapezoid* pB2D + // render the trapezoids + const XRenderPictFormat* pMaskFormat = rRenderPeer.GetStandardFormatA8(); + rRenderPeer.CompositeTrapezoids( PictOpOver, +- rEntry.m_aPicture, aDstPic, pMaskFormat, 0, 0, &aTrapVector[0], aTrapVector.size() ); ++ rEntry.m_aPicture, aDstPic, pMaskFormat, 0, 0, aTrapVector.data(), aTrapVector.size() ); + + return true; + } +@@ -1639,7 +1639,7 @@ bool X11SalGraphicsImpl::drawFilledTriangles( + // render the trapezoids + const XRenderPictFormat* pMaskFormat = rRenderPeer.GetStandardFormatA8(); + rRenderPeer.CompositeTriangles( PictOpOver, +- rEntry.m_aPicture, aDstPic, pMaskFormat, 0, 0, &aTriVector[0], aTriVector.size() ); ++ rEntry.m_aPicture, aDstPic, pMaskFormat, 0, 0, aTriVector.data(), aTriVector.size() ); + + return true; + } +diff --git a/vcl/unx/generic/print/glyphset.cxx b/vcl/unx/generic/print/glyphset.cxx +index 0f259ab5b669..522bb06f99c6 100644 +--- a/vcl/unx/generic/print/glyphset.cxx ++++ b/vcl/unx/generic/print/glyphset.cxx +@@ -233,7 +233,7 @@ static void CreatePSUploadableFont( TrueTypeFont* pSrcFont, FILE* pTmpFile, + aInfo.LoadFont( pSrcFont ); + + aInfo.CreateFontSubset( nTargetMask, pTmpFile, pGlyphSetName, +- &aRequestedGlyphs[0], &aEncoding[0], nGlyphCount ); ++ &aRequestedGlyphs[0], aEncoding.data(), nGlyphCount ); + } + + void +diff --git a/vcl/unx/generic/window/salframe.cxx b/vcl/unx/generic/window/salframe.cxx +index ab0700e948e2..f961d04545c3 100644 +--- a/vcl/unx/generic/window/salframe.cxx ++++ b/vcl/unx/generic/window/salframe.cxx +@@ -2929,7 +2929,7 @@ bool X11SalFrame::appendUnicodeSequence( sal_Unicode c ) + + SalExtTextInputEvent aEv; + aEv.maText = rSeq; +- aEv.mpTextAttr = &attribs[0]; ++ aEv.mpTextAttr = attribs.data(); + aEv.mnCursorPos = 0; + aEv.mnCursorFlags = 0; + +diff --git a/vcl/unx/gtk/gtksalframe.cxx b/vcl/unx/gtk/gtksalframe.cxx +index 1499af92ee70..ed3cce166980 100644 +--- a/vcl/unx/gtk/gtksalframe.cxx ++++ b/vcl/unx/gtk/gtksalframe.cxx +@@ -3292,7 +3292,7 @@ void GtkSalFrame::IMHandler::endExtTextInput( EndExtTextInputFlags /*nFlags*/ ) + if( ! aDel.isDeleted() ) + { + // mark previous preedit state again (will e.g. be sent at focus gain) +- m_aInputEvent.mpTextAttr = &m_aInputFlags[0]; ++ m_aInputEvent.mpTextAttr = m_aInputFlags.data(); + if( m_bFocused ) + { + // begin preedit again +@@ -3608,7 +3608,7 @@ void GtkSalFrame::IMHandler::signalIMPreeditChanged( GtkIMContext*, gpointer im_ + } while (pango_attr_iterator_next (iter)); + pango_attr_iterator_destroy(iter); + +- pThis->m_aInputEvent.mpTextAttr = &pThis->m_aInputFlags[0]; ++ pThis->m_aInputEvent.mpTextAttr = pThis->m_aInputFlags.data(); + + g_free( pText ); + pango_attr_list_unref( pAttrs ); +diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx +index 184102e74b17..d1af70f75775 100644 +--- a/vcl/unx/gtk3/gtk3gtkframe.cxx ++++ b/vcl/unx/gtk3/gtk3gtkframe.cxx +@@ -3852,7 +3852,7 @@ void GtkSalFrame::IMHandler::endExtTextInput( EndExtTextInputFlags /*nFlags*/ ) + if( ! aDel.isDeleted() ) + { + // mark previous preedit state again (will e.g. be sent at focus gain) +- m_aInputEvent.mpTextAttr = &m_aInputFlags[0]; ++ m_aInputEvent.mpTextAttr = m_aInputFlags.data(); + if( m_bFocused ) + { + // begin preedit again +@@ -4159,7 +4159,7 @@ void GtkSalFrame::IMHandler::signalIMPreeditChanged( GtkIMContext*, gpointer im_ + } while (pango_attr_iterator_next (iter)); + pango_attr_iterator_destroy(iter); + +- pThis->m_aInputEvent.mpTextAttr = &pThis->m_aInputFlags[0]; ++ pThis->m_aInputEvent.mpTextAttr = pThis->m_aInputFlags.data(); + + g_free( pText ); + pango_attr_list_unref( pAttrs ); +-- +2.21.0 +