diff options
author | Ken Moore <moorekou@gmail.com> | 2015-08-31 12:08:18 -0400 |
---|---|---|
committer | Ken Moore <moorekou@gmail.com> | 2015-08-31 12:08:18 -0400 |
commit | ff3f0cf9122511cb8efaaee1671cc1bd63611081 (patch) | |
tree | e768864ca835eda88c1f5a3cacebb4db9a88581d | |
parent | Make sure the *pointer* to the XDGDesktop structure is constant, not the stru... (diff) | |
download | lumina-ff3f0cf9122511cb8efaaee1671cc1bd63611081.tar.gz lumina-ff3f0cf9122511cb8efaaee1671cc1bd63611081.tar.bz2 lumina-ff3f0cf9122511cb8efaaee1671cc1bd63611081.zip |
Fix an issues with possible seg-faults when saving a *.desktop structure to file.
-rw-r--r-- | libLumina/LuminaXDG.cpp | 15 | ||||
-rw-r--r-- | libLumina/LuminaXDG.h | 2 |
2 files changed, 10 insertions, 7 deletions
diff --git a/libLumina/LuminaXDG.cpp b/libLumina/LuminaXDG.cpp index cb4fab3c..15cd47fe 100644 --- a/libLumina/LuminaXDG.cpp +++ b/libLumina/LuminaXDG.cpp @@ -83,9 +83,8 @@ bool LFileInfo::isDesktopFile(){ } // -- Allow access to the XDG desktop data structure -XDGDesktop* LFileInfo::XDG() const{ - - return (XDGDesktop * const)(&desk); +XDGDesktop* LFileInfo::XDG(){ + return &desk; } // -- Check if this is a readable image file (for thumbnail support) @@ -244,6 +243,7 @@ XDGDesktop LXDG::loadDesktopFile(QString filePath, bool& ok){ } bool LXDG::saveDesktopFile(XDGDesktop dFile, bool merge){ + qDebug() << "Save Desktop File:" << dFile.filePath << "Merge:" << merge; bool autofile = dFile.filePath.contains("/autostart/"); //use the "Hidden" field instead of the "NoDisplay" int insertloc = -1; QStringList info; @@ -253,11 +253,14 @@ bool LXDG::saveDesktopFile(XDGDesktop dFile, bool merge){ //set a couple flags based on the contents before we start iterating through // - determine if a translated field was changed (need to remove all the now-invalid translations) bool clearName, clearComment, clearGName; - QString tmp = info.filter("Name=").first().section("=",1,50); + QString tmp = ""; + if(!info.filter("Name=").isEmpty()){ tmp = info.filter("Name=").first().section("=",1,50); } clearName=(tmp!=dFile.name); - tmp = info.filter("Comment=").first().section("=",1,50); + tmp.clear(); + if(!info.filter("Comment=").isEmpty()){ tmp = info.filter("Comment=").first().section("=",1,50); } clearComment=(tmp!=dFile.comment); - tmp = info.filter("GenericName=").first().section("=",1,50); + tmp.clear(); + if(!info.filter("GenericName=").isEmpty()){ tmp = info.filter("GenericName=").first().section("=",1,50); } clearGName=(tmp!=dFile.genericName); //Now start iterating through the file and changing fields as necessary bool insection = false; diff --git a/libLumina/LuminaXDG.h b/libLumina/LuminaXDG.h index 1bef5caa..82243973 100644 --- a/libLumina/LuminaXDG.h +++ b/libLumina/LuminaXDG.h @@ -97,7 +97,7 @@ public: bool isDesktopFile(); // -- Allow access to the internal XDG desktop data structure - XDGDesktop* XDG() const; + XDGDesktop* XDG(); //Other file type identification routines bool isImage(); //Is a readable image file (for thumbnail support) |