diff --git a/winixd/core/request.cpp b/winixd/core/request.cpp index d5df691..9af6fd3 100644 --- a/winixd/core/request.cpp +++ b/winixd/core/request.cpp @@ -36,7 +36,7 @@ #include "log.h" #include "plugin.h" #include "misc.h" - +#include "functions/functionbase.h" namespace Winix @@ -100,6 +100,9 @@ void Request::Clear() RemovePostFileTmp(post_file_tab); ClearOutputStreams(); + if( function ) + function->Clear(); + post_tab.clear(); post_file_tab.clear(); cookie_tab.clear(); @@ -131,7 +134,7 @@ void Request::Clear() dir_tab.clear(); last_item = &item; is_item = false; - function = 0; + function = nullptr; param_tab.clear(); anchor.clear(); diff --git a/winixd/functions/functionbase.cpp b/winixd/functions/functionbase.cpp index adfafc6..dab6cae 100644 --- a/winixd/functions/functionbase.cpp +++ b/winixd/functions/functionbase.cpp @@ -149,6 +149,12 @@ void FunctionBase::MakeDelete() } +void FunctionBase::Clear() +{ + // do nothing by default +} + + } // namespace Winix diff --git a/winixd/functions/functionbase.h b/winixd/functions/functionbase.h index 0495604..9259430 100644 --- a/winixd/functions/functionbase.h +++ b/winixd/functions/functionbase.h @@ -96,6 +96,7 @@ public: virtual void MakePost(); virtual void MakeGet(); virtual void MakeDelete(); + virtual void Clear(); //void SetConfig(Config * pconfig); //void SetCur(Cur * pcur); diff --git a/winixd/functions/ls.cpp b/winixd/functions/ls.cpp index 5705d33..11c968b 100644 --- a/winixd/functions/ls.cpp +++ b/winixd/functions/ls.cpp @@ -98,14 +98,19 @@ void Ls::MakeGet() { prepare_files(); prepare_dirs(); - - cur->request->models.Add(L"items", item_tab); - cur->request->models.Add(L"child_dirs", dir_tab); } + + cur->request->models.Add(L"items", item_tab); + cur->request->models.Add(L"child_dirs", dir_tab); } +void Ls::Clear() +{ + item_tab.clear(); + dir_tab.clear(); +} diff --git a/winixd/functions/ls.h b/winixd/functions/ls.h index e7e4ef2..5c00af1 100644 --- a/winixd/functions/ls.h +++ b/winixd/functions/ls.h @@ -51,7 +51,7 @@ public: Ls(); void MakeGet(); - + void Clear(); private: