vcl/ios/DataFlavorMapping.cxx |   11 +++++++++--
 vcl/osx/DataFlavorMapping.cxx |   10 +++++++++-
 2 files changed, 18 insertions(+), 3 deletions(-)

New commits:
commit 796d55989cc9029d5d823ac44837583f845a3967
Author:     Patrick Luby <guibmac...@gmail.com>
AuthorDate: Thu Jun 20 11:11:54 2024 -0400
Commit:     Michael Stahl <michael.st...@allotropia.de>
CommitDate: Fri Jun 21 10:49:42 2024 +0200

    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 <guibomac...@gmail.com>
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>

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;

Reply via email to