diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-12-08 20:10:48 +0100 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-12-14 11:00:49 +0100 |
commit | c4b36f01f3286a1c7f183323df00b36270c8498b (patch) | |
tree | 93bcc0c3956d161c80067cf5903f43c53be252a1 /signal-composer-binding/signal-composer.cpp | |
parent | e599b4ba129df475a9c8bb8290c3803f9dda664a (diff) |
Fix memory leaks relative to json_object
Change-Id: I0cff16c1d44b9363522fde7c6c9b2bd10ba376ac
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'signal-composer-binding/signal-composer.cpp')
-rw-r--r-- | signal-composer-binding/signal-composer.cpp | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/signal-composer-binding/signal-composer.cpp b/signal-composer-binding/signal-composer.cpp index 8461748..4a0346c 100644 --- a/signal-composer-binding/signal-composer.cpp +++ b/signal-composer-binding/signal-composer.cpp @@ -89,6 +89,12 @@ Composer::Composer() Composer::~Composer() { + for(auto& j: ctlActionsJ_) + { + json_object_put(j); + } + json_object_put(ctlConfig_->configJ); + json_object_put(ctlConfig_->requireJ); free(ctlConfig_); } @@ -174,7 +180,7 @@ json_object* Composer::buildLuaAction(std::string name, std::string function, js CtlActionT* Composer::convert2Action(const std::string& name, json_object* actionJ) { json_object *functionArgsJ = nullptr, - *ctlActionJ = nullptr; + *ctlActionJ = nullptr; char *function; const char *plugin; CtlActionT *ctlAction = new CtlActionT; @@ -219,10 +225,13 @@ CtlActionT* Composer::convert2Action(const std::string& name, json_object* actio } } + // Register json object for later release + ctlActionsJ_.push_back(ctlActionJ); if(ctlActionJ) { - if(!ActionLoadOne(nullptr, ctlAction, ctlActionJ, 0)) - return ctlAction; + int err = ActionLoadOne(nullptr, ctlAction, ctlActionJ, 0); + if(! err) + {return ctlAction;} } return nullptr; @@ -306,6 +315,8 @@ int Composer::loadOneSourceAPI(json_object* sourceJ) { std::string function = "api://" + std::string(api) + "/subscribe"; getSignalsJ = buildApiAction("getSignals", function, nullptr); + // Register json object for later release + ctlActionsJ_.push_back(getSignalsJ); } getSignalsCtl = convert2Action("getSignals", getSignalsJ); |