From 7ac6207a79b1850367e59e03c0b7f8807e6ae4b0 Mon Sep 17 00:00:00 2001
From: Jens-Heiner Rechtien
Date: Thu, 17 Sep 2009 16:34:35 +0000
Subject: CWS-TOOLING: integrate CWS vcl105 2009-09-07 Philipp Lohmann fix path
issues 2009-09-07 hdu #i104525# Aqua: workaround OSX problem in RecentlyUsed
list 2009-09-07 Philipp Lohmann add missing dollar sign 2009-09-07 Philipp
Lohmann remove warnings 2009-09-07 hdu #i104011# need to use real-vals in
cff-subsetter for some fonts 2009-09-05 Philipp Lohmann #i103674# less noise
2009-09-05 Philipp Lohmann #i103674# add garmin communicator to list of
crashing plugins 2009-09-05 Philipp Lohmann #i103674# confiuration option to
disable plugin support 2009-09-05 Philipp Lohmann merge #i102735# 2009-09-05
Philipp Lohmann #i88802# enable transparency resolution for PDF/A 2009-09-04
Philipp Lohmann rebase to DEV300m57 2009-09-03 Philipp Lohmann #i90083# fix a
typo 2009-09-03 Philipp Lohmann merge 2009-09-03 Philipp Lohmann #i90083#
workaround for application frame switching 2009-09-03 hdu #i104720# better
description for --without-fonts configure option 2009-09-02 hdu #i104723#
update third-party fonts 2009-09-02 hdu #i104723# update default-installed
Liberation fonts from 1.04->1.05.1.20090721 2009-09-02 hdu #i104720# update
default-installed DejaVu fonts from 2.21->2.30 2009-09-02 hdu #i89682# add
Gentium fonts to default installation 2009-09-02 hdu #i89682# add Gentium
fonts to default installation 2009-09-01 hdu #i104011# fix vertical offset in
PDF-export of USP-layouted text 2009-08-27 Philipp Lohmann #i102033# ignore
transients 2009-08-27 Philipp Lohmann merge 2009-08-27 Philipp Lohmann fix
warning, remove crappy early exits 2009-08-26 Philipp Lohmann #i63494# user
event time for generic plugin always regotten to work around metacity
2009-08-26 Philipp Lohmann merge 2009-08-26 Philipp Lohmann #i104526# fix
string conversion 2009-08-25 Philipp Lohmann #b6855541# show newly added
driver, repair remove driver 2009-08-25 Philipp Lohmann #i104469# maximizing
issue (thanks haggai)
---
shell/source/aqua/sysshell/systemshell.cxx | 38 +++++++++++++++++++++++++++---
1 file changed, 35 insertions(+), 3 deletions(-)
(limited to 'shell/source/aqua')
diff --git a/shell/source/aqua/sysshell/systemshell.cxx b/shell/source/aqua/sysshell/systemshell.cxx
index 276759aa5a..11d02aa921 100644
--- a/shell/source/aqua/sysshell/systemshell.cxx
+++ b/shell/source/aqua/sysshell/systemshell.cxx
@@ -71,17 +71,49 @@ static rtl::OUString translateToExternalUrl(const rtl::OUString& internalUrl)
return extUrl;
}
+// #i104525# many versions of OSX have problems with some URLs:
+// when an app requests OSX to add one of these URLs to the "Recent Items" list
+// then this app gets killed (TextEdit, Preview, etc. and also OOo)
+static bool isDangerousUrl( const rtl::OUString& rUrl)
+{
+ // use a heuristic that detects all known cases since there is no official comment
+ // on the exact impact and root cause of the OSX bug
+ const int nLen = rUrl.getLength();
+ const sal_Unicode* p = rUrl.getStr();
+ for( int i = 0; i < nLen-3; ++i, ++p) {
+ if( p[0] != '%')
+ continue;
+ // escaped percent?
+ if( (p[1] == '2') && (p[2] == '5'))
+ return true;
+ // escapes are considered to be UTF-8 encoded
+ // => check for invalid UTF-8 leading byte
+ if( (p[1] != 'f') && (p[1] != 'F'))
+ continue;
+ int cLowNibble = p[2];
+ if( (cLowNibble >= '0') && (cLowNibble <= '9'))
+ return false;
+ if( cLowNibble >= 'a')
+ cLowNibble -= 'a' - 'A';
+ if( (cLowNibble < 'A') || (cLowNibble >= 'C'))
+ return true;
+ }
+
+ return false;
+}
+
namespace SystemShell {
//##############################
- void AddToRecentDocumentList(const rtl::OUString& aFileUrl, const rtl::OUString& aMimeType)
+ void AddToRecentDocumentList(const rtl::OUString& aFileUrl, const rtl::OUString& /*aMimeType*/)
{
// Convert file URL for external use (see above)
rtl::OUString externalUrl = translateToExternalUrl(aFileUrl);
if( 0 == externalUrl.getLength() )
externalUrl = aFileUrl;
-
- if( externalUrl.getLength() )
+
+ if( externalUrl.getLength()
+ && !isDangerousUrl( externalUrl))
{
NSString* pString = [[NSString alloc] initWithCharacters: externalUrl.getStr() length: externalUrl.getLength()];
NSURL* pURL = [NSURL URLWithString: pString];
--
cgit v1.2.1