diff --git a/libpeony-qt/file-operation/file-copy-operation.cpp b/libpeony-qt/file-operation/file-copy-operation.cpp index a5058ff2..7b900c2c 100644 --- a/libpeony-qt/file-operation/file-copy-operation.cpp +++ b/libpeony-qt/file-operation/file-copy-operation.cpp @@ -707,8 +707,16 @@ void FileCopyOperation::run() std::shared_ptr mHelper = std::make_shared(m_dest_dir_uri); if (mHelper->isUnixCDDevice()) { m_is_udf_burn_work = true; + bool isMountpoint = false; mHelper->judgeSpecialDiscOperation(); - if (!mHelper->dealDVDReduce().isEmpty()) { + g_autoptr(GFile) file = g_file_new_for_uri (m_dest_dir_uri.toUtf8().constData()); + if (file) { + g_autoptr(GFileInfo) fileInfo = g_file_query_info(file, G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, nullptr, nullptr); + if (fileInfo) { + isMountpoint = g_file_info_get_attribute_boolean(fileInfo, G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT); + } + } + if (!mHelper->dealDVDReduce().isEmpty() && isMountpoint) { m_dest_dir_uri = mHelper->dealDVDReduce(); } } diff --git a/libpeony-qt/file-operation/file-move-operation.cpp b/libpeony-qt/file-operation/file-move-operation.cpp index 4bdd31e5..1b2f0e8e 100644 --- a/libpeony-qt/file-operation/file-move-operation.cpp +++ b/libpeony-qt/file-operation/file-move-operation.cpp @@ -1222,8 +1222,16 @@ void FileMoveOperation::run() std::shared_ptr mHelper = std::make_shared(m_dest_dir_uri); if (mHelper->isUnixCDDevice()) { m_is_udf_burn_work = true; + bool isMountpoint = false; mHelper->judgeSpecialDiscOperation(); - if (!mHelper->dealDVDReduce().isEmpty()) { + g_autoptr(GFile) file = g_file_new_for_uri (m_dest_dir_uri.toUtf8().constData()); + if (file) { + g_autoptr(GFileInfo) fileInfo = g_file_query_info(file, G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS, nullptr, nullptr); + if (fileInfo) { + isMountpoint = g_file_info_get_attribute_boolean(fileInfo, G_FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT); + } + } + if (!mHelper->dealDVDReduce().isEmpty() && isMountpoint) { m_dest_dir_uri = mHelper->dealDVDReduce(); if (isCancelled()) return;