summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2012-05-02 18:25:28 +0200
committerStephan Bergmann <sbergman@redhat.com>2012-05-02 18:33:00 +0200
commitbd5da80befbd1f7f09aadf4b02122414c010d65b (patch)
tree8c1ab11a3ab807d5ba4271a35deb76e5ac080b05
parentcbc99cf1de7bc99df41af166e241fdf47f702f5b (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.cxx10
-rw-r--r--ucb/source/ucp/file/filglob.cxx3
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;