diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2022-07-08 16:47:01 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2022-07-08 18:01:07 +0200 |
commit | 27ffdcf096a7e9863489599dd80528b088d1e9b8 (patch) | |
tree | b1b6c86cff34914f04c69359ea51b2e835c6da0e /sfx2 | |
parent | ca7fa700b10ea8947333ec72f763c3d47a4b2e57 (diff) |
rhbz#2104545: Only call utl::IsYounger when its result is actually used
...as it may be expensive, or even throw (uncaught) exceptions (as apparently
happened at rhbz#2104545, throwing some css::uno::RuntimeException while aMedObj
was an sftp URL).
The two branches in the if statement's condition that will now potentially call
physObjIsOlder are disjoint (one for aMedObj being a file URL, the other for
aMedObj being any WebDAV-related URL), so there is no chance that this change
accidentally causes utl::IsYounger to be called more often than it used to be
called.
Change-Id: I29a5f18a12a8b83ec603366db26451175b5622c9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/136904
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'sfx2')
-rw-r--r-- | sfx2/source/view/viewfrm.cxx | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx index 43c111216402..f0f539ca675d 100644 --- a/sfx2/source/view/viewfrm.cxx +++ b/sfx2/source/view/viewfrm.cxx @@ -269,6 +269,11 @@ bool AskPasswordToModify_Impl( const uno::Reference< task::XInteractionHandler > return bResult; } + +bool physObjIsOlder(INetURLObject const & aMedObj, INetURLObject const & aPhysObj) { + return ::utl::UCBContentHelper::IsYounger(aMedObj.GetMainURL( INetURLObject::DecodeMechanism::NONE), + aPhysObj.GetMainURL( INetURLObject::DecodeMechanism::NONE ) ); +} } void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq ) @@ -437,8 +442,6 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq ) // etag tells that the cache representation (e.g. in LO) is different from the one on the server, // but tells nothing about the age // Details at this link: http://tools.ietf.org/html/rfc4918#section-15, section 15.7 - bool const bPhysObjIsOlder = ::utl::UCBContentHelper::IsYounger(aMedObj.GetMainURL( INetURLObject::DecodeMechanism::NONE), - aPhysObj.GetMainURL( INetURLObject::DecodeMechanism::NONE ) ); bool bIsWebDAV = aMedObj.isAnyKnownWebDAVScheme(); // tdf#118938 Reload the document when the user enters the editing password, @@ -446,8 +449,8 @@ void SfxViewFrame::ExecReload_Impl( SfxRequest& rReq ) if ( ( !bNeedsReload && ( ( aMedObj.GetProtocol() == INetProtocol::File && ( aMedObj.getFSysPath( FSysStyle::Detect ) != aPhysObj.getFSysPath( FSysStyle::Detect ) || bPasswordEntered ) && - !bPhysObjIsOlder) - || (bIsWebDAV && !bPhysObjIsOlder) + !physObjIsOlder(aMedObj, aPhysObj)) + || (bIsWebDAV && !physObjIsOlder(aMedObj, aPhysObj)) || ( pMed->IsRemote() && !bIsWebDAV ) ) ) || pVersionItem ) // <- tdf#82744 |