writerperfect/source/stream/WPXSvStream.cxx | 22 +++++++++++++--------- writerperfect/source/stream/WPXSvStream.h | 14 ++++++++++++-- 2 files changed, 25 insertions(+), 11 deletions(-)
New commits: commit 03e9d452d96525c30f808def38adc7ffd5fdcfcc Author: Fridrich Å trba <fridrich.st...@bluewin.ch> Date: Fri May 25 16:47:13 2012 +0200 Trying to wrap the tools references inside a struct Change-Id: Ie4d9a1d2c131f14928d7cc47f1b6314cf7e7f41d diff --git a/writerperfect/source/stream/WPXSvStream.cxx b/writerperfect/source/stream/WPXSvStream.cxx index d71e155..cf5c52d 100644 --- a/writerperfect/source/stream/WPXSvStream.cxx +++ b/writerperfect/source/stream/WPXSvStream.cxx @@ -163,17 +163,20 @@ WPXInputStream *WPXSvInputStream::getDocumentOLEStream(const char *name) return 0; } - mxChildrenStorages.push_back(new SotStorage( pStream, sal_True )); + SotStorageRefWrapper storageRefWrapper; + storageRefWrapper.ref = new SotStorage( pStream, sal_True ); + mxChildrenStorages.push_back( storageRefWrapper ); unsigned i = 0; while (i < aElems.size()) { - if( mxChildrenStorages.back()->IsStream(aElems[i])) + if( mxChildrenStorages.back().ref->IsStream(aElems[i])) break; - else if (mxChildrenStorages.back()->IsStorage(aElems[i])) + else if (mxChildrenStorages.back().ref->IsStorage(aElems[i])) { - SotStorageRef &tmpParent(mxChildrenStorages.back()); - mxChildrenStorages.push_back(tmpParent->OpenSotStorage(aElems[i++], STREAM_STD_READ)); + SotStorageRef tmpParent(mxChildrenStorages.back().ref); + storageRefWrapper.ref = tmpParent->OpenSotStorage(aElems[i++], STREAM_STD_READ); + mxChildrenStorages.push_back(storageRefWrapper); } else // should not happen @@ -186,18 +189,19 @@ WPXInputStream *WPXSvInputStream::getDocumentOLEStream(const char *name) if (i >= aElems.size()) return 0; - mxChildrenStreams.push_back( mxChildrenStorages.back()->OpenSotStream( - aElems[i], STREAM_STD_READ )); + SotStorageStreamRefWrapper storageStreamRefWrapper; + storageStreamRefWrapper.ref = mxChildrenStorages.back().ref->OpenSotStream( aElems[i], STREAM_STD_READ ); + mxChildrenStreams.push_back( storageStreamRefWrapper ); mxSeekable->seek(tmpPosition); - if ( !mxChildrenStreams.back().Is() || mxChildrenStreams.back()->GetError() ) + if ( !mxChildrenStreams.back().ref.Is() || mxChildrenStreams.back().ref->GetError() ) { mxSeekable->seek(tmpPosition); return 0; } - Reference < XInputStream > xContents(new utl::OSeekableInputStreamWrapper( mxChildrenStreams.back() )); + Reference < XInputStream > xContents(new utl::OSeekableInputStreamWrapper( mxChildrenStreams.back().ref )); mxSeekable->seek(tmpPosition); if (xContents.is()) return new WPXSvInputStream( xContents ); diff --git a/writerperfect/source/stream/WPXSvStream.h b/writerperfect/source/stream/WPXSvStream.h index 2e9dc09..6206a00 100644 --- a/writerperfect/source/stream/WPXSvStream.h +++ b/writerperfect/source/stream/WPXSvStream.h @@ -18,6 +18,16 @@ #pragma warning( pop ) #endif +typedef struct +{ + SotStorageRef ref; +} SotStorageRefWrapper; + +typedef struct +{ + SotStorageStreamRef ref; +} SotStorageStreamRefWrapper; + class WPXSvInputStream : public WPXInputStream { public: @@ -34,8 +44,8 @@ public: virtual bool atEOS(); private: - std::vector< SotStorageRef > mxChildrenStorages; - std::vector< SotStorageStreamRef > mxChildrenStreams; + std::vector< SotStorageRefWrapper > mxChildrenStorages; + std::vector< SotStorageStreamRefWrapper > mxChildrenStreams; ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > mxStream; ::com::sun::star::uno::Reference<
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits