From 2444d98dfa326155d8a7104b88ae4a5f11dc4661 Mon Sep 17 00:00:00 2001 From: Hannah von Reth Date: Tue, 12 Jul 2022 15:47:14 +0200 Subject: [PATCH] Fix string handling in csync_vio_local_unix.cpp --- src/csync/vio/csync_vio_local_unix.cpp | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/src/csync/vio/csync_vio_local_unix.cpp b/src/csync/vio/csync_vio_local_unix.cpp index cf680ca99ea..62f3410a49d 100644 --- a/src/csync/vio/csync_vio_local_unix.cpp +++ b/src/csync/vio/csync_vio_local_unix.cpp @@ -42,11 +42,9 @@ Q_LOGGING_CATEGORY(lcCSyncVIOLocal, "sync.csync.vio_local", QtInfoMsg) struct csync_vio_handle_t { DIR *dh; - QByteArray path; + QString path; }; -static int _csync_vio_local_stat_mb(const char *wuri, csync_file_stat_t *buf); - csync_vio_handle_t *csync_vio_local_opendir(const QString &name) { QScopedPointer handle(new csync_vio_handle_t{}); @@ -57,7 +55,7 @@ csync_vio_handle_t *csync_vio_local_opendir(const QString &name) { return nullptr; } - handle->path = dirname; + handle->path = name; return handle.take(); } @@ -80,7 +78,6 @@ std::unique_ptr csync_vio_local_readdir(csync_vio_handle_t *h file_stat.reset(new csync_file_stat_t); file_stat->path = QFile::decodeName(dirent->d_name); - QByteArray fullPath = handle->path % '/' % QByteArray() % const_cast(dirent->d_name); /* Check for availability of d_type, see manpage. */ #if defined(_DIRENT_HAVE_D_TYPE) || defined(__APPLE__) @@ -103,10 +100,7 @@ std::unique_ptr csync_vio_local_readdir(csync_vio_handle_t *h } #endif - if (file_stat->path.isNull()) - return file_stat; - - if (_csync_vio_local_stat_mb(fullPath.constData(), file_stat.get()) < 0) { + if (csync_vio_local_stat(handle->path + QLatin1Char('/') + file_stat->path, file_stat.get()) < 0) { // Will get excluded by _csync_detect_update. file_stat->type = ItemTypeSkip; } @@ -123,15 +117,10 @@ std::unique_ptr csync_vio_local_readdir(csync_vio_handle_t *h int csync_vio_local_stat(const QString &uri, csync_file_stat_t *buf) -{ - return _csync_vio_local_stat_mb(QFile::encodeName(uri).constData(), buf); -} - -static int _csync_vio_local_stat_mb(const char *wuri, csync_file_stat_t *buf) { struct stat sb; - if (stat(wuri, &sb) < 0) { + if (stat(QFile::encodeName(uri).constData(), &sb) < 0) { return -1; }