[PATCH] --amend
Ricardo Montania (via Code Review)
gerrit at gerrit.libreoffice.org
Sun Feb 10 06:11:20 PST 2013
Hi,
I have submitted a patch for review:
https://gerrit.libreoffice.org/2086
To pull it, you can do:
git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/86/2086/1
--amend
Change-Id: Ib32b63039b225236d2a6fe55c0b90fdae9bc8fa6
---
M filter/source/msfilter/svdfppt.cxx
M sd/source/filter/ppt/pptin.cxx
M sd/source/filter/ppt/propread.cxx
M sd/source/filter/ppt/propread.hxx
4 files changed, 125 insertions(+), 29 deletions(-)
diff --git a/filter/source/msfilter/svdfppt.cxx b/filter/source/msfilter/svdfppt.cxx
index 537e5f2..4b202fb 100644
--- a/filter/source/msfilter/svdfppt.cxx
+++ b/filter/source/msfilter/svdfppt.cxx
@@ -5048,7 +5048,7 @@
}
}
if ( i )
- aString = OUString( pBuf );
+ aString = OUString(pBuf, i);
delete[] pBuf;
}
else if( aTextHd.nRecType == PPT_PST_TextBytesAtom )
@@ -5101,7 +5101,7 @@
}
}
- if ( aString.getLength() )
+ if ( !aString.isEmpty() )
{
sal_uInt32 nCharCount;
sal_Bool bTextPropAtom = sal_False;
@@ -5123,7 +5123,7 @@
PPTCharPropSet aCharPropSet( nCurrentPara );
if ( bTextPropAtom )
{
- if( nCharAnzRead == ( nStringLen - 1 ) && aString == "\r" )
+ if( nCharAnzRead == ( nStringLen - 1 ) && aString[nCharAnzRead] == '\r' )
{
/* n#782833: Seems like the new line character at end of the para
* has two char properties and we would need to use the next one.
@@ -5165,7 +5165,7 @@
{
nLen = ( nCurrentSpecMarker & 0xffff ) - nCharAnzRead;
if ( nLen )
- aCharPropSet.maString = aString;
+ aCharPropSet.maString = aString.copy( nCharAnzRead, nLen );
else if ( bEmptyParaPossible )
aCharPropSet.maString = OUString();
if ( nLen || bEmptyParaPossible )
@@ -5181,7 +5181,7 @@
if ( ( nCurrentSpecMarker & 0xffff ) != nCharAnzRead )
{
nLen = ( nCurrentSpecMarker & 0xffff ) - nCharAnzRead;
- aCharPropSet.maString = aString;
+ aCharPropSet.maString = aString.copy(nCharAnzRead, nLen);
aCharPropList.push_back( new PPTCharPropSet( aCharPropSet, nCurrentPara ) );
nCharCount -= nLen;
nCharAnzRead += nLen;
@@ -5199,7 +5199,7 @@
}
else
{
- aCharPropSet.maString = aString;
+ aCharPropSet.maString = aString.copy(nCharAnzRead, nLen);
aCharPropList.push_back( new PPTCharPropSet( aCharPropSet, nCurrentPara ) );
nCharAnzRead += nCharCount;
bEmptyParaPossible = sal_False;
@@ -6506,8 +6506,8 @@
{
OUString aString( pSet->maString );
PPTCharPropSet* pNew = new PPTCharPropSet( *pSet );
- pSet->maString = aString;
- pNew->maString = aString;
+ pSet->maString = aString.copy( 0, nOldLen);
+ pNew->maString = aString.copy( nOldLen, nNewLen);
pNew->mnOriginalTextPos += nOldLen;
aStyleTextPropReader.aCharPropList.insert( aStyleTextPropReader.aCharPropList.begin() + nI + 1, pNew );
}
@@ -6744,14 +6744,14 @@
if ( (*FE)->nPos == nPos )
{
- if ( aString[(sal_uInt16)nCount] == 0x2a )
+ if ( aString[nCount] == 0x2a )
{
sal_uInt32 nBehind = aString.getLength() - ( nCount + 1 );
pSet->maString = OUString();
if ( nBehind )
{
PPTCharPropSet* pNewCPS = new PPTCharPropSet( *pSet );
- pNewCPS->maString = aString;
+ pNewCPS->maString = aString.copy( nCount + 1, nBehind );
aCharPropList.insert( aCharPropList.begin() + n + 1, pNewCPS );
}
if ( (*FE)->pField2 )
@@ -6767,7 +6767,7 @@
if ( nCount )
{
PPTCharPropSet* pNewCPS = new PPTCharPropSet( *pSet );
- pNewCPS->maString = aString;
+ pNewCPS->maString = aString.copy( 0, nCount );
aCharPropList.insert( aCharPropList.begin() + n++, pNewCPS );
}
if ( (*FE)->pField1 )
@@ -6788,7 +6788,7 @@
if ( nCount )
{
pBefCPS = new PPTCharPropSet( *pSet );
- pSet->maString = pSet->maString;
+ pSet->maString = pSet->maString.copy(nCount, pSet->maString.getLength() - nCount);
}
sal_uInt32 nIdx = n;
sal_Int32 nHyperLenLeft = nHyperLen;
@@ -6836,9 +6836,9 @@
else
{
PPTCharPropSet* pNewCPS = new PPTCharPropSet( *pCurrent );
- pNewCPS->maString = pCurrent->maString;
+ pNewCPS->maString = pCurrent->maString.copy( nHyperLenLeft,( nNextStringLen - nHyperLenLeft ) );
aCharPropList.insert( aCharPropList.begin() + nIdx + 1, pNewCPS );
- OUString aRepresentation( pCurrent->maString );
+ OUString aRepresentation = pCurrent->maString.copy( 0, nHyperLenLeft );
pCurrent->mpFieldItem = new SvxFieldItem( SvxURLField( pField->GetURL(), aRepresentation, SVXURLFORMAT_REPR ), EE_FEATURE_FIELD );
nHyperLenLeft = 0;
}
@@ -6851,7 +6851,7 @@
if ( pBefCPS )
{
- pBefCPS->maString = aString;
+ pBefCPS->maString = aString.copy( 0, nCount );
aCharPropList.insert( aCharPropList.begin() + n, pBefCPS );
n++;
}
diff --git a/sd/source/filter/ppt/pptin.cxx b/sd/source/filter/ppt/pptin.cxx
index ac3f1a5..7360f66 100644
--- a/sd/source/filter/ppt/pptin.cxx
+++ b/sd/source/filter/ppt/pptin.cxx
@@ -409,7 +409,7 @@
break;
pHyperlink->nStartPos = pHyperlink->nEndPos = -1;
- if ( pHyperlink->aSubAdress.Len() ) // get the converted subadress
+ if ( pHyperlink->aSubAdress.getLength() ) // get the converted subadress
{
sal_uInt32 nPageNumber = 0;
String aString( pHyperlink->aSubAdress );
@@ -480,11 +480,11 @@
{
if ( nPageNumber < maSlideNameList.size() )
pHyperlink->aConvSubString = maSlideNameList[ nPageNumber ];
- if ( !pHyperlink->aConvSubString.Len() )
+ if ( !pHyperlink->aConvSubString.getLength() )
{
- pHyperlink->aConvSubString = String( SdResId( STR_PAGE ) );
- pHyperlink->aConvSubString.Append( sal_Unicode( ' ' ) );
- pHyperlink->aConvSubString.Append( mpDoc->CreatePageNumValue( (sal_uInt16)nPageNumber + 1 ) );
+ pHyperlink->aConvSubString = OUString( SdResId( STR_PAGE ) );
+ pHyperlink->aConvSubString += " ";
+ pHyperlink->aConvSubString += ( mpDoc->CreatePageNumValue( (sal_uInt16)nPageNumber + 1 ) );
}
}
}
@@ -646,9 +646,9 @@
for ( nLevel = 0; nLevel < 9; nLevel++ )
{
- String aName( pPage->GetLayoutName() );
- aName.Append( (sal_Unicode)( ' ' ) );
- aName.Append( String::CreateFromInt32( nLevel + 1 ) );
+ OUString aName( pPage->GetLayoutName() );
+ aName += " ";
+ aName += OUString::number( nLevel + 1 );
SfxStyleSheet* pOutlineSheet = (SfxStyleSheet*)mpDoc->GetStyleSheetPool()->Find( aName, SD_STYLE_FAMILY_MASTERPAGE );
DBG_ASSERT( pOutlineSheet, "Vorlage fuer Gliederungsobjekt nicht gefunden" );
if ( pOutlineSheet )
@@ -2087,7 +2087,7 @@
case 9:
case 8: // hyperlink : URL
{
- if ( pPtr->aTarget.Len() )
+ if ( pPtr->aTarget.getLength() )
{
::sd::DrawDocShell* pDocShell = mpDoc->GetDocSh();
if ( pDocShell )
@@ -2111,7 +2111,7 @@
case 7: // hyperlink auf eine Seite
{
- if ( pPtr->aConvSubString.Len() )
+ if ( pPtr->aConvSubString.getLength() )
{
pInfo->meClickAction = ::com::sun::star::presentation::ClickAction_BOOKMARK;
pInfo->SetBookmark( pPtr->aConvSubString );
@@ -2203,9 +2203,9 @@
{
for ( sal_uInt16 nLevel = 9; nLevel; nLevel-- )
{
- String aName( pPage->GetLayoutName() );
- aName.Append( (sal_Unicode)( ' ' ) );
- aName.Append( String::CreateFromInt32( nLevel ) );
+ OUString aName( pPage->GetLayoutName() );
+ aName += " ";
+ aName += OUString::number( nLevel );
pSheet = (SfxStyleSheet*)mpDoc->GetStyleSheetPool()->Find( aName, SD_STYLE_FAMILY_MASTERPAGE );
if ( pSheet )
pText->StartListening( *pSheet );
diff --git a/sd/source/filter/ppt/propread.cxx b/sd/source/filter/ppt/propread.cxx
index 1e698db..57c5613 100644
--- a/sd/source/filter/ppt/propread.cxx
+++ b/sd/source/filter/ppt/propread.cxx
@@ -169,6 +169,101 @@
return bRetValue;
}
+sal_Bool PropItem::Read( OUString& rString, sal_uInt32 nStringType, sal_Bool bAlign )
+{
+ sal_uInt32 i, nItemSize, nType, nItemPos;
+ sal_Bool bRetValue = sal_False;
+
+ nItemPos = Tell();
+
+ if ( nStringType == VT_EMPTY )
+ *this >> nType;
+ else
+ nType = nStringType & VT_TYPEMASK;
+
+ *this >> nItemSize;
+
+ switch( nType )
+ {
+ case VT_LPSTR :
+ {
+ if ( nItemSize )
+ {
+ try
+ {
+ sal_Char* pString = new sal_Char[ nItemSize ];
+ if ( mnTextEnc == RTL_TEXTENCODING_UCS2 )
+ {
+ nItemSize >>= 1;
+ if ( nItemSize > 1 )
+ {
+ sal_Unicode* pWString = (sal_Unicode*)pString;
+ for ( i = 0; i < nItemSize; i++ )
+ *this >> pWString[ i ];
+ rString = OUString(pWString, lcl_getMaxSafeStrLen(nItemSize));
+ }
+ else
+ rString = OUString();
+ bRetValue = sal_True;
+ }
+ else
+ {
+ SvMemoryStream::Read( pString, nItemSize );
+ if ( pString[ nItemSize - 1 ] == 0 )
+ {
+ if ( nItemSize > 1 )
+ rString = OUString(pString, rtl_str_getLength(pString), mnTextEnc);
+ else
+ rString = OUString();
+ bRetValue = sal_True;
+ }
+ }
+ delete[] pString;
+ }
+ catch( const std::bad_alloc& )
+ {
+ OSL_FAIL( "sd PropItem::Read bad alloc" );
+ }
+ }
+ if ( bAlign )
+ SeekRel( ( 4 - ( nItemSize & 3 ) ) & 3 ); // dword align
+ }
+ break;
+
+ case VT_LPWSTR :
+ {
+ if ( nItemSize )
+ {
+ try
+ {
+ sal_Unicode* pString = new sal_Unicode[ nItemSize ];
+ for ( i = 0; i < nItemSize; i++ )
+ *this >> pString[ i ];
+ if ( pString[ i - 1 ] == 0 )
+ {
+ if ( (sal_uInt16)nItemSize > 1 )
+ rString = OUString(pString, lcl_getMaxSafeStrLen(nItemSize));
+ else
+ rString = OUString();
+ bRetValue = sal_True;
+ }
+ delete[] pString;
+ }
+ catch( const std::bad_alloc& )
+ {
+ OSL_FAIL( "sd PropItem::Read bad alloc" );
+ }
+ }
+ if ( bAlign && ( nItemSize & 1 ) )
+ SeekRel( 2 ); // dword align
+ }
+ break;
+ }
+ if ( !bRetValue )
+ Seek( nItemPos );
+ return bRetValue;
+}
+
// -----------------------------------------------------------------------
PropItem& PropItem::operator=( PropItem& rPropItem )
diff --git a/sd/source/filter/ppt/propread.hxx b/sd/source/filter/ppt/propread.hxx
index b05b977..083c7f2 100644
--- a/sd/source/filter/ppt/propread.hxx
+++ b/sd/source/filter/ppt/propread.hxx
@@ -125,7 +125,8 @@
void Clear();
void SetTextEncoding( sal_uInt16 nTextEnc ){ mnTextEnc = nTextEnc; };
- sal_Bool Read( String& rString, sal_uInt32 nType = VT_EMPTY, sal_Bool bDwordAlign = sal_True );
+ sal_Bool Read( String& rString, sal_uInt32 nType = VT_EMPTY, sal_Bool bDwordAlign = sal_True );
+ sal_Bool Read( OUString& rString, sal_uInt32 nType = VT_EMPTY, sal_Bool bDwordAlign = sal_True );
PropItem& operator=( PropItem& rPropItem );
using SvStream::Read;
--
To view, visit https://gerrit.libreoffice.org/2086
To unsubscribe, visit https://gerrit.libreoffice.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib32b63039b225236d2a6fe55c0b90fdae9bc8fa6
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: Ricardo Montania <ricardo at linuxafundo.com.br>
More information about the LibreOffice
mailing list