解决配置对象内存泄漏

This commit is contained in:
gb 2023-08-09 16:43:29 +08:00
parent 729c261917
commit 8cde3ad57b
2 changed files with 7 additions and 1 deletions

View File

@ -178,7 +178,8 @@ namespace gb
simple_val_.dval = val; simple_val_.dval = val;
} }
json::json(const char* key, const char* val) : type_(VAL_TYPE_STRING), key_(key ? key : ""), strval_(val ? val : ""), cur_child_(-1) json::json(const char* key, const char* val) : type_(VAL_TYPE_STRING), key_(key ? key : ""), strval_(val ? val : ""), cur_child_(-1)
{} {
}
json::json(json& r) json::json(json& r)
{ {
copy_from(r); copy_from(r);
@ -1437,6 +1438,7 @@ namespace gb
name = child->key(); name = child->key();
child->value(raw_v); child->value(raw_v);
val = sane_config_schm::from_hex_letter(raw_v.c_str(), raw_v.length()); val = sane_config_schm::from_hex_letter(raw_v.c_str(), raw_v.length());
child->release();
ret = true; ret = true;
} }
@ -1454,6 +1456,7 @@ namespace gb
name = child->key(); name = child->key();
child->value(raw_v); child->value(raw_v);
val = sane_config_schm::from_hex_letter(raw_v.c_str(), raw_v.length()); val = sane_config_schm::from_hex_letter(raw_v.c_str(), raw_v.length());
child->release();
ret = true; ret = true;
} }
@ -1706,6 +1709,7 @@ namespace gb
{ {
clear(); clear();
global_->release(); global_->release();
opt_default_value_->release();
} }
bool scanner_cfg::update(const char* file, LPUDF func) bool scanner_cfg::update(const char* file, LPUDF func)
@ -1776,6 +1780,7 @@ namespace gb
glb->get_value(scanner_cfg::cur_sel_.c_str(), sel); glb->get_value(scanner_cfg::cur_sel_.c_str(), sel);
glb->release(); glb->release();
glb = jsn->first_child(); glb = jsn->first_child();
glb->release();
while ((glb = jsn->next_child())) while ((glb = jsn->next_child()))
{ {
std::string val(""); std::string val("");

View File

@ -544,6 +544,7 @@ scanner::~scanner()
if (cfg_) if (cfg_)
{ {
cfg_->remove_all_schemes(); // schemes would add_ref on cfg_, so we clear them first. NOTE: do not call save after this !!!
cfg_->release(); cfg_->release();
cfg_ = NULL; cfg_ = NULL;
} }