tdf#155710 handle conversion failures due to non-UTF8 strings

Windows and Linux paths can be passed as parameters to this function
and those paths may not always be UTF8 encoded like macOS paths.

Change-Id: I83f5ab491d3c0ddd938e512fbab3213af9ea16fd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163223
Tested-by: Jenkins
Reviewed-by: Patrick Luby <guibomacdev@gmail.com>
(cherry picked from commit fa1b6aa517966991ce1a1d0135bd5dfae331ab9a)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/163176
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
diff --git a/sal/osl/unx/system.cxx b/sal/osl/unx/system.cxx
index f19bd70..eba4fe0 100644
--- a/sal/osl/unx/system.cxx
+++ b/sal/osl/unx/system.cxx
@@ -48,11 +48,6 @@ int macxp_resolveAlias(char *path, int buflen)
  (void) buflen;
  return 0;
#else
  CFStringRef cfpath;
  CFURLRef cfurl;
  CFErrorRef cferror;
  CFDataRef cfbookmark;

  // Don't even try anything for files inside the app bundle. Just a
  // waste of time.

@@ -74,12 +69,19 @@ int macxp_resolveAlias(char *path, int buflen)
      if ( unprocessedPath )
          *unprocessedPath = '\0';

      cfpath = CFStringCreateWithCString( nullptr, path, kCFStringEncodingUTF8 );
      cfurl = CFURLCreateWithFileSystemPath( nullptr, cfpath, kCFURLPOSIXPathStyle, false );
      CFRelease( cfpath );
      cferror = nullptr;
      cfbookmark = CFURLCreateBookmarkDataFromFile( nullptr, cfurl, &cferror );
      CFRelease( cfurl );
      // tdf#155710 handle conversion failures due to non-UTF8 strings
      // Windows and Linux paths can be passed as parameters to this function
      // and those paths may not always be UTF8 encoded like macOS paths.
      CFStringRef cfpath = CFStringCreateWithCString( nullptr, path, kCFStringEncodingUTF8 );
      CFErrorRef cferror = nullptr;
      CFDataRef cfbookmark = nullptr;
      if (cfpath)
      {
          CFURLRef cfurl = CFURLCreateWithFileSystemPath( nullptr, cfpath, kCFURLPOSIXPathStyle, false );
          CFRelease( cfpath );
          cfbookmark = CFURLCreateBookmarkDataFromFile( nullptr, cfurl, &cferror );
          CFRelease( cfurl );
      }

      if ( cfbookmark == nullptr )
      {
@@ -91,7 +93,7 @@ int macxp_resolveAlias(char *path, int buflen)
      else
      {
          Boolean isStale;
          cfurl = CFURLCreateByResolvingBookmarkData( nullptr, cfbookmark, kCFBookmarkResolutionWithoutUIMask,
          CFURLRef cfurl = CFURLCreateByResolvingBookmarkData( nullptr, cfbookmark, kCFBookmarkResolutionWithoutUIMask,
                                                      nullptr, nullptr, &isStale, &cferror );
          CFRelease( cfbookmark );
          if ( cfurl == nullptr )