From f900ab0121a1b1e0f86cbfde493f9860159e8e61 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Wed, 21 Jan 2015 21:50:02 +0100 Subject: [PATCH] config/Data: add method Clear() Move code from config_global_finish(). --- Makefile.am | 2 +- src/config/ConfigGlobal.cxx | 4 +--- src/config/Data.cxx | 30 ++++++++++++++++++++++++++++++ src/config/Data.hxx | 2 ++ 4 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 src/config/Data.cxx diff --git a/Makefile.am b/Makefile.am index b027c9c88..349e00e14 100644 --- a/Makefile.am +++ b/Makefile.am @@ -769,7 +769,7 @@ endif libconf_a_SOURCES = \ src/config/ConfigDefaults.hxx \ src/config/ConfigPath.cxx src/config/ConfigPath.hxx \ - src/config/Data.hxx \ + src/config/Data.cxx src/config/Data.hxx \ src/config/Block.cxx src/config/Block.hxx \ src/config/Param.cxx src/config/Param.hxx \ src/config/ConfigParser.cxx src/config/ConfigParser.hxx \ diff --git a/src/config/ConfigGlobal.cxx b/src/config/ConfigGlobal.cxx index 322c800da..5c04ea93e 100644 --- a/src/config/ConfigGlobal.cxx +++ b/src/config/ConfigGlobal.cxx @@ -37,9 +37,7 @@ static ConfigData config_data; void config_global_finish(void) { - for (auto i : config_data.params) - delete i; - config_data.params.fill(0); + config_data.Clear(); } void config_global_init(void) diff --git a/src/config/Data.cxx b/src/config/Data.cxx new file mode 100644 index 000000000..ae36b7f21 --- /dev/null +++ b/src/config/Data.cxx @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2003-2015 The Music Player Daemon Project + * http://www.musicpd.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "config.h" +#include "Data.hxx" +#include "Param.hxx" + +void +ConfigData::Clear() +{ + for (auto i : params) + delete i; + params.fill(nullptr); +} diff --git a/src/config/Data.hxx b/src/config/Data.hxx index a79836324..af1da956f 100644 --- a/src/config/Data.hxx +++ b/src/config/Data.hxx @@ -28,6 +28,8 @@ struct config_param; struct ConfigData { std::array params; + + void Clear(); }; #endif