summaryrefslogtreecommitdiff
path: root/shell/source
diff options
context:
space:
mode:
authorsb <sb@openoffice.org>2009-09-25 15:27:34 +0200
committersb <sb@openoffice.org>2009-09-25 15:27:34 +0200
commite993d53e2a4bd6fd3eccdb885bd461d59fcec5b5 (patch)
tree27fe95bc9c8fb6c68657abebedf795c2e2c82614 /shell/source
parent42345be352f413b571b83d262cc96025a9e8618d (diff)
parentab33e14647ada2a32624fa39ec0ddbbbdc694df5 (diff)
merged in DEV300_m60
Diffstat (limited to 'shell/source')
-rw-r--r--shell/source/aqua/sysshell/makefile.mk1
-rw-r--r--shell/source/aqua/sysshell/systemshell.cxx36
-rw-r--r--shell/source/backends/macbe/makefile.mk3
3 files changed, 35 insertions, 5 deletions
diff --git a/shell/source/aqua/sysshell/makefile.mk b/shell/source/aqua/sysshell/makefile.mk
index a748e00c154e..b3cf3abdec36 100644
--- a/shell/source/aqua/sysshell/makefile.mk
+++ b/shell/source/aqua/sysshell/makefile.mk
@@ -40,7 +40,6 @@ ENABLE_EXCEPTIONS=TRUE
.INCLUDE : settings.mk
-OBJCXXFLAGS=-x objective-c++ -fobjc-exceptions
CFLAGSCXX+=$(OBJCXXFLAGS)
# --- Files --------------------------------------------------------
diff --git a/shell/source/aqua/sysshell/systemshell.cxx b/shell/source/aqua/sysshell/systemshell.cxx
index a9b4afe1a966..a9535c849f77 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];
diff --git a/shell/source/backends/macbe/makefile.mk b/shell/source/backends/macbe/makefile.mk
index dd2b166ce1ce..c8f6891d6f87 100644
--- a/shell/source/backends/macbe/makefile.mk
+++ b/shell/source/backends/macbe/makefile.mk
@@ -50,11 +50,10 @@ DLLPRE =
.IF "$(OS)" != "MACOSX"
dummy:
- @echo "Nothing to build for OS $(OS)."
+ @echo "Nothing to build for OS $(OS)."
.ELSE
-OBJCXXFLAGS=-x objective-c++ -fobjc-exceptions
CFLAGSCXX+=$(OBJCXXFLAGS)
SLOFILES= \