diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2012-05-02 18:25:28 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2012-05-02 18:33:00 +0200 |
commit | bd5da80befbd1f7f09aadf4b02122414c010d65b (patch) | |
tree | 8c1ab11a3ab807d5ba4271a35deb76e5ac080b05 | |
parent | cbc99cf1de7bc99df41af166e241fdf47f702f5b (diff) |
Handle cases where ExtensionDescription is called on nonexisting path
...which happens when installing non-bundle extensions (like a plain .xcu
file), where the path computed for the description.xml contains the path to
the non-bundle extension file itself as a prefix, so access results in
E_NOTDIR.
Change-Id: Ic0f4a34b46d99d1817ceea599bb8b53dbd65bc49
-rw-r--r-- | desktop/source/deployment/misc/dp_descriptioninfoset.cxx | 10 | ||||
-rw-r--r-- | ucb/source/ucp/file/filglob.cxx | 3 |
2 files changed, 9 insertions, 4 deletions
diff --git a/desktop/source/deployment/misc/dp_descriptioninfoset.cxx b/desktop/source/deployment/misc/dp_descriptioninfoset.cxx index 14cf7b198e42..1a5a43a518a2 100644 --- a/desktop/source/deployment/misc/dp_descriptioninfoset.cxx +++ b/desktop/source/deployment/misc/dp_descriptioninfoset.cxx @@ -49,7 +49,7 @@ #include "com/sun/star/xml/dom/XNodeList.hpp" #include "com/sun/star/xml/dom/XDocumentBuilder.hpp" #include "com/sun/star/xml/xpath/XXPathAPI.hpp" -#include "com/sun/star/ucb/InteractiveAugmentedIOException.hpp" +#include "com/sun/star/ucb/InteractiveIOException.hpp" #include "cppuhelper/implbase1.hxx" #include "cppuhelper/implbase2.hxx" #include "cppuhelper/weak.hxx" @@ -206,7 +206,7 @@ ExtensionDescription::ExtensionDescription( //throws an com::sun::star::uno::Exception if the file is not available Reference<css::io::XInputStream> xIn; try - { //throws com.sun.star.ucb.InteractiveAugmentedIOException + { //throws com.sun.star.ucb.InteractiveIOException xIn = descContent.openStream(); } catch ( const css::uno::Exception& ) @@ -318,8 +318,10 @@ void FileDoesNotExistFilter::handle( { css::uno::Any request( xRequest->getRequest() ); - css::ucb::InteractiveAugmentedIOException ioexc; - if ((request>>= ioexc) && ioexc.Code == css::ucb::IOErrorCode_NOT_EXISTING ) + css::ucb::InteractiveIOException ioexc; + if ((request>>= ioexc) + && (ioexc.Code == css::ucb::IOErrorCode_NOT_EXISTING + || ioexc.Code == css::ucb::IOErrorCode_NOT_EXISTING_PATH)) { m_bExist = false; return; diff --git a/ucb/source/ucp/file/filglob.cxx b/ucb/source/ucp/file/filglob.cxx index a6176ccbae46..bab84d6c00ef 100644 --- a/ucb/source/ucp/file/filglob.cxx +++ b/ucb/source/ucp/file/filglob.cxx @@ -323,6 +323,9 @@ namespace fileaccess { // No such device ioErrorCode = IOErrorCode_INVALID_DEVICE; break; + case FileBase::E_NOTDIR: + ioErrorCode = IOErrorCode_NOT_EXISTING_PATH; + break; case FileBase::E_NOENT: // No such file or directory ioErrorCode = IOErrorCode_NOT_EXISTING; |