From f3d44db512f5e877065cbb0afdfd25ce206976dd Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Sun, 17 Aug 2014 10:42:47 -0700 Subject: 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 Signed-off-by: Dirk Hohndel --- qthelper.cpp | 10 ++++------ save-html.c | 4 +++- 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 -- cgit v1.2.3-70-g09d2