[PATCH 1/4] Return the file name from prepare_dives_for_divelogs in a QString
Thiago Macieira
thiago at macieira.org
Mon Dec 16 09:06:51 UTC 2013
This avoids having to remember to free it at every point. This is C++,
we have destructors :-)
Signed-off-by: Thiago Macieira <thiago at macieira.org>
---
qt-ui/subsurfacewebservices.cpp | 23 +++++++++--------------
1 file changed, 9 insertions(+), 14 deletions(-)
diff --git a/qt-ui/subsurfacewebservices.cpp b/qt-ui/subsurfacewebservices.cpp
index 096100a..1daffce 100644
--- a/qt-ui/subsurfacewebservices.cpp
+++ b/qt-ui/subsurfacewebservices.cpp
@@ -98,18 +98,18 @@ static void clear_table(struct dive_table *table)
table->nr = 0;
}
-static char *prepare_dives_for_divelogs(const bool selected)
+static QString prepare_dives_for_divelogs(const bool selected)
{
static const char errPrefix[] = "divelog.de-upload:";
if (!amount_selected) {
qDebug() << errPrefix << "no dives selected";
- return NULL;
+ return QString();
}
int i;
struct dive *dive;
FILE *f;
- char filename[PATH_MAX], *tempfile;
+ char filename[PATH_MAX];
int streamsize;
char *membuf;
xsltStylesheetPtr xslt = NULL;
@@ -124,14 +124,12 @@ static char *prepare_dives_for_divelogs(const bool selected)
}
/* generate a random filename and create/open that file with zip_open */
- QString tempfileQ = QDir::tempPath() + "/import-" + QString::number(qrand() % 99999999) + ".dld";
- tempfile = strdup(tempfileQ.toLocal8Bit().data());
- zip = zip_open(tempfile, ZIP_CREATE, NULL);
+ QString tempfile = QDir::tempPath() + "/import-" + QString::number(qrand() % 99999999) + ".dld";
+ zip = zip_open(QFile::encodeName(tempfile), ZIP_CREATE, NULL);
if (!zip) {
qDebug() << errPrefix << "cannot open file as zip";
- free((void *)tempfile);
- return NULL;
+ return QString();
}
/* walk the dive list in chronological order */
@@ -192,8 +190,7 @@ static char *prepare_dives_for_divelogs(const bool selected)
error_close_zip:
zip_close(zip);
- QFile::remove(tempfileQ);
- free(tempfile);
+ QFile::remove(tempfile);
xsltFreeStylesheet(xslt);
return NULL;
}
@@ -555,18 +552,16 @@ void DivelogsDeWebServices::downloadDives()
void DivelogsDeWebServices::prepareDivesForUpload()
{
QString errorText(tr("Cannot create DLD file"));
- char *filename = prepare_dives_for_divelogs(true);
- if (filename) {
+ QString filename = prepare_dives_for_divelogs(true);
+ if (!filename.isEmpty()) {
QFile f(filename);
if (f.open(QIODevice::ReadOnly)) {
uploadDives((QIODevice *)&f);
f.close();
f.remove();
- free((void *)filename);
return;
}
mainWindow()->showError(errorText.append(": ").append(filename));
- free((void *)filename);
return;
}
mainWindow()->showError(errorText.append("!"));
--
1.7.11.7
More information about the subsurface
mailing list