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;