]> git.stg.codes - stg.git/commitdiff
Исправлена утечка ресурса (файловый дескриптор) в плагине store_files.
authorMaxim Mamontov <faust@gts.dp.ua>
Thu, 9 Dec 2010 12:58:32 +0000 (14:58 +0200)
committerMaxim Mamontov <faust@gts.dp.ua>
Thu, 9 Dec 2010 12:58:32 +0000 (14:58 +0200)
Утечка происходила при возникновении ошибки, по этому никогда не
проявлялась

projects/stargazer/plugins/store/files/file_store.cpp
projects/stargazer/plugins/store/files/file_store.h

index fe5ed230052a1b30aad4e9c40ba8f37197021add..57f825d6e2df91854112a41426460f5add6e3adc 100644 (file)
@@ -1921,6 +1921,7 @@ while (stIter != statTree.end())
         errorStr += strerror(errno);
         errorStr += "'";
         printfd(__FILE__, "FILES_STORE::WriteDetailStat - fprintf failed. Message: '%s'\n", strerror(errno));
+        fclose(statFile);
         return -1;
         }
     #else
@@ -1936,6 +1937,7 @@ while (stIter != statTree.end())
         errorStr += strerror(errno);
         errorStr += "'";
         printfd(__FILE__, "FILES_STORE::WriteDetailStat - fprintf failed. Message: '%s'\n", strerror(errno));
+        fclose(statFile);
         return -1;
         }
     #endif
index 13c3a3fad9423f156f1b12690609baede2ac143c..bf9fbf00aff8ae2242537d9954729782cd245a00 100644 (file)
 #ifndef FILE_STORE_H
 #define FILE_STORE_H
 
-#include <string>
 #include <sys/types.h>
 
+#include <string>
+
 #include "base_settings.h"
 #include "base_store.h"
 #include "conffiles.h"
@@ -80,6 +81,7 @@ private:
     int     ParseGroup(const vector<PARAM_VALUE> & moduleParams, const string & group, uid_t * uid);
     int     ParseMode(const vector<PARAM_VALUE> & moduleParams, const string & modeStr, mode_t * mode);
     int     ParseYesNo(const string & value, bool * val);
+
     string  errorStr;
 
     string  workDir;
@@ -181,8 +183,8 @@ public:
     virtual int DelService(const string &) const {return 0;};
 
     //virtual BASE_SETTINGS * GetStoreSettings();
-    virtual void            SetSettings(const MODULE_SETTINGS & s);
-    virtual int             ParseSettings();
+    virtual void SetSettings(const MODULE_SETTINGS & s);
+    virtual int ParseSettings();
     virtual const string &  GetVersion() const;
 
 private:
@@ -191,12 +193,13 @@ private:
 
     virtual int WriteLogString(const string & str, const string & login) const;
     virtual int WriteLog2String(const string & str, const string & login) const;
-    int     RemoveDir(const char * path) const;
-    int     GetFilesList(vector<string> * filesList, const string & directory, mode_t mode, const string & ext) const;
-    mutable string          errorStr;
-    string                  version;
-    FILES_STORE_SETTINGS    storeSettings;
-    MODULE_SETTINGS         settings;
+    int RemoveDir(const char * path) const;
+    int GetFilesList(vector<string> * filesList, const string & directory, mode_t mode, const string & ext) const;
+
+    mutable string errorStr;
+    string version;
+    FILES_STORE_SETTINGS storeSettings;
+    MODULE_SETTINGS settings;
     mutable pthread_mutex_t mutex;
 };
 //-----------------------------------------------------------------------------