mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Don't leak the zip structure in case of error
This also erases the zip file that we created Signed-off-by: Thiago Macieira <thiago@macieira.org> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
b3d59cb890
commit
cb39bb5e9c
1 changed files with 10 additions and 6 deletions
|
@ -145,8 +145,7 @@ static char *prepare_dives_for_divelogs(const bool selected)
|
||||||
f = tmpfile();
|
f = tmpfile();
|
||||||
if (!f) {
|
if (!f) {
|
||||||
qDebug() << errPrefix << "cannot create temp file";
|
qDebug() << errPrefix << "cannot create temp file";
|
||||||
free((void *)tempfile);
|
goto error_close_zip;
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
save_dive(f, dive);
|
save_dive(f, dive);
|
||||||
fseek(f, 0, SEEK_END);
|
fseek(f, 0, SEEK_END);
|
||||||
|
@ -157,8 +156,7 @@ static char *prepare_dives_for_divelogs(const bool selected)
|
||||||
qDebug() << errPrefix << "memory error";
|
qDebug() << errPrefix << "memory error";
|
||||||
fclose(f);
|
fclose(f);
|
||||||
free((void *)membuf);
|
free((void *)membuf);
|
||||||
free((void *)tempfile);
|
goto error_close_zip;
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
membuf[streamsize] = 0;
|
membuf[streamsize] = 0;
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
@ -171,8 +169,7 @@ static char *prepare_dives_for_divelogs(const bool selected)
|
||||||
if (!doc) {
|
if (!doc) {
|
||||||
qDebug() << errPrefix << "xml error";
|
qDebug() << errPrefix << "xml error";
|
||||||
free((void *)membuf);
|
free((void *)membuf);
|
||||||
free((void *)tempfile);
|
goto error_close_zip;
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
free((void *)membuf);
|
free((void *)membuf);
|
||||||
transformed = xsltApplyStylesheet(xslt, doc, NULL);
|
transformed = xsltApplyStylesheet(xslt, doc, NULL);
|
||||||
|
@ -193,6 +190,13 @@ static char *prepare_dives_for_divelogs(const bool selected)
|
||||||
zip_close(zip);
|
zip_close(zip);
|
||||||
xsltFreeStylesheet(xslt);
|
xsltFreeStylesheet(xslt);
|
||||||
return tempfile;
|
return tempfile;
|
||||||
|
|
||||||
|
error_close_zip:
|
||||||
|
zip_close(zip);
|
||||||
|
QFile::remove(tempfileQ);
|
||||||
|
free(tempfile);
|
||||||
|
xsltFreeStylesheet(xslt);
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
WebServices::WebServices(QWidget* parent, Qt::WindowFlags f): QDialog(parent, f)
|
WebServices::WebServices(QWidget* parent, Qt::WindowFlags f): QDialog(parent, f)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue