summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Luby <guibmacdev@gmail.com>2024-06-20 11:11:54 -0400
committerChristian Lohmaier <lohmaier+LibreOffice@googlemail.com>2024-06-27 12:36:07 +0200
commitb9485aad85c48b4444220279f5499908c52f00f5 (patch)
tree54a1974d47d5a5b264bedd6516be970dec6d7827
parent51a6219feb6075d9a4c46691dcfe0cd9c4fff3c2 (diff)
tdf#161461 stop crashing by retaining NSString
OUStringToNSString() returns an autoreleased NSString so it needs to be retained for the life of maOfficeOnlyTypes. Change-Id: Ic3777f818b7cada8e88e97965531fc0a7f2e825c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/169290 Tested-by: Jenkins Reviewed-by: Patrick Luby <guibomacdev@gmail.com> Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
-rw-r--r--vcl/ios/DataFlavorMapping.cxx11
-rw-r--r--vcl/osx/DataFlavorMapping.cxx10
2 files changed, 18 insertions, 3 deletions
diff --git a/vcl/ios/DataFlavorMapping.cxx b/vcl/ios/DataFlavorMapping.cxx
index 14bf0f6f43d7..607f110222bb 100644
--- a/vcl/ios/DataFlavorMapping.cxx
+++ b/vcl/ios/DataFlavorMapping.cxx
@@ -421,10 +421,17 @@ NSString* DataFlavorMapper::openOfficeToSystemFlavor(const DataFlavor& oOOFlavor
OfficeOnlyTypes::const_iterator it = maOfficeOnlyTypes.find(oOOFlavor.MimeType);
if (it == maOfficeOnlyTypes.end())
- sysFlavor = maOfficeOnlyTypes[oOOFlavor.MimeType]
- = OUStringToNSString(oOOFlavor.MimeType);
+ {
+ // tdf#161461 stop crashing by retaining NSString
+ // OUStringToNSString() returns an autoreleased NSString so it
+ // needs to be retained for the life of maOfficeOnlyTypes.
+ sysFlavor = maOfficeOnlyTypes[oOOFlavor.MimeType] =
+ [OUStringToNSString(oOOFlavor.MimeType) retain];
+ }
else
+ {
sysFlavor = it->second;
+ }
}
return sysFlavor;
diff --git a/vcl/osx/DataFlavorMapping.cxx b/vcl/osx/DataFlavorMapping.cxx
index ade3f48dd1ab..c08c32ba9b60 100644
--- a/vcl/osx/DataFlavorMapping.cxx
+++ b/vcl/osx/DataFlavorMapping.cxx
@@ -586,9 +586,17 @@ const NSString* DataFlavorMapper::openOfficeToSystemFlavor( const DataFlavor& oO
OfficeOnlyTypes::const_iterator it = maOfficeOnlyTypes.find( oOOFlavor.MimeType );
if( it == maOfficeOnlyTypes.end() )
- sysFlavor = maOfficeOnlyTypes[ oOOFlavor.MimeType ] = OUStringToNSString( oOOFlavor.MimeType );
+ {
+ // tdf#161461 stop crashing by retaining NSString
+ // OUStringToNSString() returns an autoreleased NSString so it
+ // needs to be retained for the life of maOfficeOnlyTypes.
+ sysFlavor = maOfficeOnlyTypes[oOOFlavor.MimeType] =
+ [OUStringToNSString(oOOFlavor.MimeType) retain];
+ }
else
+ {
sysFlavor = it->second;
+ }
}
return sysFlavor;