From 5797d86c0546ba2018ed89c06d2296ae7c360ef0 Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Tue, 22 Jan 2013 19:37:04 +0200 Subject: [PATCH] Fix torrent creator when saving to a non-latin path in Windows. --- src/torrentcreator/torrentcreatordlg.cpp | 2 +- src/torrentcreator/torrentcreatorthread.cpp | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/torrentcreator/torrentcreatordlg.cpp b/src/torrentcreator/torrentcreatordlg.cpp index f5d642bb5..02cd856cb 100644 --- a/src/torrentcreator/torrentcreatordlg.cpp +++ b/src/torrentcreator/torrentcreatordlg.cpp @@ -141,7 +141,7 @@ void TorrentCreatorDlg::on_createButton_clicked() { connect(creatorThread, SIGNAL(creationSuccess(QString, QString)), this, SLOT(handleCreationSuccess(QString, QString))); connect(creatorThread, SIGNAL(creationFailure(QString)), this, SLOT(handleCreationFailure(QString))); connect(creatorThread, SIGNAL(updateProgress(int)), this, SLOT(updateProgressBar(int))); - creatorThread->create(input, destination, trackers, url_seeds, comment, check_private->isChecked(), getPieceSize()); + creatorThread->create(input, QDir::toNativeSeparators(destination), trackers, url_seeds, comment, check_private->isChecked(), getPieceSize()); } void TorrentCreatorDlg::handleCreationFailure(QString msg) { diff --git a/src/torrentcreator/torrentcreatorthread.cpp b/src/torrentcreator/torrentcreatorthread.cpp index caf488f64..68803d97d 100644 --- a/src/torrentcreator/torrentcreatorthread.cpp +++ b/src/torrentcreator/torrentcreatorthread.cpp @@ -129,7 +129,14 @@ void TorrentCreatorThread::run() { if (abort) return; // create the torrent and print it to out qDebug("Saving to %s", qPrintable(save_path)); +#ifdef _MSC_VER + wchar_t *wsave_path = new wchar_t[save_path.length()]; + save_path.toWCharArray(wsave_path); + std::ofstream outfile(wsave_path, std::ios_base::out|std::ios_base::binary); + delete[] wsave_path; +#else std::ofstream outfile(save_path.toLocal8Bit().constData(), std::ios_base::out|std::ios_base::binary); +#endif if (outfile.fail()) throw std::exception(); bencode(std::ostream_iterator(outfile), t.generate());