diff options
author | Thiago Macieira <thiago@macieira.org> | 2014-08-17 10:42:47 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-08-17 12:01:56 -0600 |
commit | f3d44db512f5e877065cbb0afdfd25ce206976dd (patch) | |
tree | 62c39fcdd5ce14ec7c8e659c56f4bd2606645ac7 | |
parent | 29f50c6aeeb31dfad7510d240e27905a9f62670d (diff) | |
download | subsurface-f3d44db512f5e877065cbb0afdfd25ce206976dd.tar.gz |
Fix and simplify get_file_name
This function created a QFile that it didn't need and it returned a
dangling pointer (the std::string object was destroyed at the end of the
function).
The function now returns a pointer that the caller must free. For that
reason, it's easier in copy_image_and_overwrite to just go for the
QFileInfo call.
Signed-off-by: Thiago Macieira <thiago@macieira.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | qthelper.cpp | 10 | ||||
-rw-r--r-- | save-html.c | 4 | ||||
-rw-r--r-- | save-html.h | 2 |
3 files changed, 8 insertions, 8 deletions
diff --git a/qthelper.cpp b/qthelper.cpp index 98fa785a1..e481bc9e9 100644 --- a/qthelper.cpp +++ b/qthelper.cpp @@ -284,19 +284,17 @@ picture_load_exit: return; } -extern "C" const char* get_file_name(const char *fileName) +extern "C" char *get_file_name(const char *fileName) { - QFile file(fileName); - QFileInfo fileInfo(file.fileName()); - QString filename(fileInfo.fileName()); - return filename.toStdString().c_str(); + QFileInfo fileInfo(fileName); + return strdup(fileInfo.fileName().toUtf8()); } extern "C" void copy_image_and_overwrite(const char *cfileName, const char *cnewName) { QString fileName = QString::fromUtf8(cfileName); QString newName = QString::fromUtf8(cnewName); - newName += get_file_name(cfileName); + newName += QFileInfo(cfileName).fileName(); QFile file(newName); if (file.exists()) file.remove(); diff --git a/save-html.c b/save-html.c index 0288d447c..82d81edda 100644 --- a/save-html.c +++ b/save-html.c @@ -16,7 +16,9 @@ void save_photos(struct membuffer *b, const char *photos_dir, struct dive *dive) struct picture *pic = dive->picture_list; put_string(b, "\"photos\":["); while (pic) { - put_format(b, "{\"filename\":\"%s\"},", get_file_name(pic->filename)); + char *fname = get_file_name(pic->filename); + put_format(b, "{\"filename\":\"%s\"},", fname); + free(fname); copy_image_and_overwrite(pic->filename, photos_dir); pic = pic->next; } diff --git a/save-html.h b/save-html.h index 6d31e4fc3..f47ae3ba6 100644 --- a/save-html.h +++ b/save-html.h @@ -19,7 +19,7 @@ void export_HTML(const char *file_name, const char *photos_dir, const bool selec void export_translation(const char *file_name); extern void copy_image_and_overwrite(const char *cfileName, const char *cnewName); -extern const char *get_file_name(const char *fileName); +extern char *get_file_name(const char *fileName); #ifdef __cplusplus } #endif |