From: allexzander Date: Fri, 2 Apr 2021 08:51:09 +0000 (+0300) Subject: Create std::wstrings out of const wchar_t* so a copy is created every time. X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~21^2~278^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=0a33e990534f787cf27a79f14922bd5c8ba1f4c5;p=nextcloud-desktop.git Create std::wstrings out of const wchar_t* so a copy is created every time. Signed-off-by: allexzander --- diff --git a/src/libsync/vfs/cfapi/cfapiwrapper.cpp b/src/libsync/vfs/cfapi/cfapiwrapper.cpp index a2e0584b4..0b09fd2ee 100644 --- a/src/libsync/vfs/cfapi/cfapiwrapper.cpp +++ b/src/libsync/vfs/cfapi/cfapiwrapper.cpp @@ -450,7 +450,7 @@ bool deleteSyncRootRegistryKey(const QString &syncRootPath, const QString &provi return true; } -OCC::Result OCC::CfApiWrapper::registerSyncRoot(const QString path, const QString providerName, const QString providerVersion, const QString folderAlias, const QString displayName, const QString accountDisplayName) +OCC::Result OCC::CfApiWrapper::registerSyncRoot(const QString &path, const QString &providerName, const QString &providerVersion, const QString &folderAlias, const QString &displayName, const QString &accountDisplayName) { // even if we fail to register our sync root with shell, we can still proceed with using the VFS const auto createRegistryKeyResult = createSyncRootRegistryKeys(providerName, folderAlias, displayName, accountDisplayName, path); @@ -460,9 +460,11 @@ OCC::Result OCC::CfApiWrapper::registerSyncRoot(const QString pat qCWarning(lcCfApiWrapper) << "Failed to create the registry key for path:" << path; } - const auto p = path.toStdWString(); - const auto name = providerName.toStdWString(); - const auto version = providerVersion.toStdWString(); + // API is somehow keeping the pointers for longer than one would expect or freeing them itself + // the internal format of QString is likely the right one for wstring on Windows so there's in fact not necessarily a need to copy + const auto p = std::wstring(path.toStdWString().data()); + const auto name = std::wstring(providerName.toStdWString().data()); + const auto version = std::wstring(providerVersion.toStdWString().data()); CF_SYNC_REGISTRATION info; info.ProviderName = name.data(); @@ -489,7 +491,7 @@ OCC::Result OCC::CfApiWrapper::registerSyncRoot(const QString pat } } -OCC::Result OCC::CfApiWrapper::unregisterSyncRoot(const QString path, const QString providerName, const QString accountDisplayName) +OCC::Result OCC::CfApiWrapper::unregisterSyncRoot(const QString &path, const QString &providerName, const QString &accountDisplayName) { const auto deleteRegistryKeyResult = deleteSyncRootRegistryKey(path, providerName, accountDisplayName); Q_ASSERT(deleteRegistryKeyResult); diff --git a/src/libsync/vfs/cfapi/cfapiwrapper.h b/src/libsync/vfs/cfapi/cfapiwrapper.h index f315921d3..2e8810b45 100644 --- a/src/libsync/vfs/cfapi/cfapiwrapper.h +++ b/src/libsync/vfs/cfapi/cfapiwrapper.h @@ -71,8 +71,8 @@ private: std::unique_ptr _data; }; -OWNCLOUDSYNC_EXPORT Result registerSyncRoot(const QString path, const QString providerName, const QString providerVersion, const QString folderAlias, const QString displayName, const QString accountDisplayName); -OWNCLOUDSYNC_EXPORT Result unregisterSyncRoot(const QString path, const QString providerName, const QString accountDisplayName); +OWNCLOUDSYNC_EXPORT Result registerSyncRoot(const QString &path, const QString &providerName, const QString &providerVersion, const QString &folderAlias, const QString &displayName, const QString &accountDisplayName); +OWNCLOUDSYNC_EXPORT Result unregisterSyncRoot(const QString &path, const QString &providerName, const QString &accountDisplayName); OWNCLOUDSYNC_EXPORT Result connectSyncRoot(const QString &path, VfsCfApi *context); OWNCLOUDSYNC_EXPORT Result disconnectSyncRoot(ConnectionKey &&key);