xmlhelp/source/treeview/tvread.cxx | 86 ++++--------------------------------- 1 file changed, 10 insertions(+), 76 deletions(-)
New commits: commit 52e0ff83639809b8f2e92a9899ed5ed795f3d780 Author: Michael Stahl <[email protected]> Date: Wed Jun 5 21:33:03 2013 +0200 stop this decadent waste of precious newlines Change-Id: I803d7d56ba7350fd0f5b2c4efa392d55a0fd4542 diff --git a/xmlhelp/source/treeview/tvread.cxx b/xmlhelp/source/treeview/tvread.cxx index d96d4a5..0669911 100644 --- a/xmlhelp/source/treeview/tvread.cxx +++ b/xmlhelp/source/treeview/tvread.cxx @@ -40,7 +40,6 @@ namespace treeview { - class TVDom { friend class TVChildTarget; @@ -61,7 +60,6 @@ namespace treeview { delete children[i]; } - TVDom* newChild() { children.push_back( new TVDom( this ) ); @@ -75,7 +73,6 @@ namespace treeview { return children.back(); } - TVDom* getParent() const { if( parent ) @@ -95,7 +92,6 @@ namespace treeview { void setKind( Kind ind ) { kind = ind; } Kind getKind( ) const { return kind; } - void setApplication( const char* appl ) { application = OUString( (sal_Char*)(appl), @@ -170,7 +166,6 @@ namespace treeview { } - using namespace treeview; using namespace com::sun::star; using namespace com::sun::star::uno; @@ -236,8 +231,6 @@ void SAL_CALL ConfigData::replaceName( OUString& oustring ) const } - - ////////////////////////////////////////////////////////////////////////// // XInterface ////////////////////////////////////////////////////////////////////////// @@ -251,7 +244,6 @@ TVBase::acquire( OWeakObject::acquire(); } - void SAL_CALL TVBase::release( void ) @@ -260,7 +252,6 @@ TVBase::release( OWeakObject::release(); } - Any SAL_CALL TVBase::queryInterface( const Type& rType ) @@ -276,7 +267,6 @@ TVBase::queryInterface( return aRet.hasValue() ? aRet : OWeakObject::queryInterface( rType ); } - //////////////////////////////////////////////////////////////////////////////// // // XTypeProvider methods. @@ -288,14 +278,8 @@ XTYPEPROVIDER_IMPL_5( TVBase, XChangesNotifier, XComponent ); - - - - - // TVRead - TVRead::TVRead( const ConfigData& configData,TVDom* tvDom ) { if( ! tvDom ) @@ -314,17 +298,10 @@ TVRead::TVRead( const ConfigData& configData,TVDom* tvDom ) Children = new TVChildTarget( configData,tvDom ); } - - TVRead::~TVRead() { } - - - - - // XNameAccess Any SAL_CALL @@ -353,9 +330,6 @@ TVRead::getByName( const OUString& aName ) throw NoSuchElementException(); } - - - Sequence< OUString > SAL_CALL TVRead::getElementNames( ) throw( RuntimeException ) @@ -369,8 +343,6 @@ TVRead::getElementNames( ) return seq; } - - sal_Bool SAL_CALL TVRead::hasByName( const OUString& aName ) throw( RuntimeException ) @@ -383,7 +355,6 @@ TVRead::hasByName( const OUString& aName ) return false; } - // XHierarchicalNameAccess Any SAL_CALL @@ -401,9 +372,6 @@ TVRead::getByHierarchicalName( const OUString& aName ) return getByName( name ); } - - - sal_Bool SAL_CALL TVRead::hasByHierarchicalName( const OUString& aName ) throw( RuntimeException ) @@ -418,17 +386,12 @@ TVRead::hasByHierarchicalName( const OUString& aName ) return hasByName( name ); } - - /**************************************************************************/ /* */ /* TVChildTarget */ /* */ /**************************************************************************/ - - - extern "C" void start_handler(void *userData, const XML_Char *name, const XML_Char **atts) @@ -466,7 +429,6 @@ extern "C" void start_handler(void *userData, } } - extern "C" void end_handler(void *userData, const XML_Char *name ) { @@ -476,7 +438,6 @@ extern "C" void end_handler(void *userData, *tvDom = (*tvDom)->getParent(); } - extern "C" void data_handler( void *userData, const XML_Char *s, int len) @@ -539,7 +500,6 @@ TVChildTarget::TVChildTarget( const Reference< XComponentContext >& xContext ) Elements[i] = new TVRead( configData,tvDom.children[i] ); } - TVChildTarget::~TVChildTarget() { } @@ -635,9 +595,6 @@ TVChildTarget::getByName( const OUString& aName ) return aAny; } - - - Sequence< OUString > SAL_CALL TVChildTarget::getElementNames( ) throw( RuntimeException ) @@ -649,8 +606,6 @@ TVChildTarget::getElementNames( ) return seq; } - - sal_Bool SAL_CALL TVChildTarget::hasByName( const OUString& aName ) throw( RuntimeException ) @@ -663,8 +618,6 @@ TVChildTarget::hasByName( const OUString& aName ) return true; } - - // XHierarchicalNameAccess Any SAL_CALL @@ -689,8 +642,6 @@ TVChildTarget::getByHierarchicalName( const OUString& aName ) return getByName( name ); } - - sal_Bool SAL_CALL TVChildTarget::hasByHierarchicalName( const OUString& aName ) throw( RuntimeException ) @@ -711,11 +662,6 @@ TVChildTarget::hasByHierarchicalName( const OUString& aName ) return hasByName( name ); } - - - - - ConfigData TVChildTarget::init( const Reference< XComponentContext >& xContext ) { ConfigData configData; @@ -878,14 +824,6 @@ ConfigData TVChildTarget::init( const Reference< XComponentContext >& xContext ) return configData; } - - - - - - - - Reference< XMultiServiceFactory > TVChildTarget::getConfiguration(const Reference< XComponentContext >& rxContext) const { @@ -905,8 +843,6 @@ TVChildTarget::getConfiguration(const Reference< XComponentContext >& rxContext) return xProvider; } - - Reference< XHierarchicalNameAccess > TVChildTarget::getHierAccess( const Reference< XMultiServiceFactory >& sProvider, const char* file ) const @@ -936,8 +872,6 @@ TVChildTarget::getHierAccess( const Reference< XMultiServiceFactory >& sProvider return xHierAccess; } - - OUString TVChildTarget::getKey( const Reference< XHierarchicalNameAccess >& xHierAccess, const char* key ) const @@ -959,7 +893,6 @@ TVChildTarget::getKey( const Reference< XHierarchicalNameAccess >& xHierAccess, return instPath; } - sal_Bool TVChildTarget::getBooleanKey(const Reference< XHierarchicalNameAccess >& xHierAccess, @@ -990,7 +923,6 @@ void TVChildTarget::subst( OUString& instpath ) const instpath = aOptions.SubstituteVariable( instpath ); } - //=================================================================== // class ExtensionIteratorBase @@ -1204,7 +1136,6 @@ void ExtensionIteratorBase::implGetLanguageVectorFromPackage( ::std::vector< OUS } } - //=================================================================== // class TreeFileIterator @@ -1326,6 +1257,4 @@ OUString TreeFileIterator::implGetTreeFileFromPackage return aRetFile; } - - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit 3ddf70dc1129e9b2294b582256c657305bbf3b3e Author: Michael Stahl <[email protected]> Date: Wed Jun 5 21:27:07 2013 +0200 xmlhelp: fix reading symlinked .tree files Apparently the .tree files nowadays are symlinked, which was not the case on the libreoffice-4-0 branch... and on viewing the Contents tab it's evident we can't actually read symlinked .tree files, and crash with an STL assert because the children vector is empty. Change-Id: I5a543ef85b827e194120530a486cf19a76837d87 diff --git a/xmlhelp/source/treeview/tvread.cxx b/xmlhelp/source/treeview/tvread.cxx index 8a2d494..d96d4a5 100644 --- a/xmlhelp/source/treeview/tvread.cxx +++ b/xmlhelp/source/treeview/tvread.cxx @@ -546,6 +546,11 @@ TVChildTarget::~TVChildTarget() void TVChildTarget::Check(TVDom* tvDom) { + if (tvDom->children.empty()) + { + return; + } + unsigned i = 0; bool h = false; @@ -808,7 +813,8 @@ ConfigData TVChildTarget::init( const Reference< XComponentContext >& xContext ) } osl::Directory aDirectory( url ); - osl::FileStatus aFileStatus( osl_FileStatus_Mask_FileName | osl_FileStatus_Mask_FileSize | osl_FileStatus_Mask_FileURL ); + osl::FileStatus aFileStatus( + osl_FileStatus_Mask_FileName | osl_FileStatus_Mask_FileURL ); if( osl::Directory::E_None == aDirectory.open() ) { int idx_ = 0; @@ -832,18 +838,17 @@ ConfigData TVChildTarget::init( const Reference< XComponentContext >& xContext ) ( str[idx_ + 3] == 'e' || str[idx_ + 3] == 'E' ) && ( str[idx_ + 4] == 'e' || str[idx_ + 4] == 'E' ) ) { - OSL_ENSURE( aFileStatus.isValid( osl_FileStatus_Mask_FileSize ), - "invalid file size" ); - OUString baseName = aFileName.copy(0,idx_).toAsciiLowerCase(); if(! showBasic && baseName.compareToAscii("sbasic") == 0 ) continue; osl::File aFile( aFileUrl ); if( osl::FileBase::E_None == aFile.open( osl_File_OpenFlag_Read ) ) { + // use the file size, not aFileStatus size, in case the + // tree file is a symlink sal_uInt64 nSize; aFile.getSize( nSize ); - configData.vFileLen.push_back( aFileStatus.getFileSize() ); + configData.vFileLen.push_back( nSize ); configData.vFileURL.push_back( aFileUrl ); aFile.close(); } _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
