aboutsummaryrefslogtreecommitdiff
path: root/config-file.cpp
diff options
context:
space:
mode:
authorNicolas Noble2002-05-02 00:46:12 +0000
committerNicolas Noble2002-05-02 00:46:12 +0000
commitcfd1ca5fe189236177441648c06049a214bd0fd1 (patch)
tree142772009c9adb53007697bc458caf37fe6a1bae /config-file.cpp
parent97880e239ae8a1b2f9197d01c1472844fad1bac7 (diff)
downloadscummvm-rg350-cfd1ca5fe189236177441648c06049a214bd0fd1.tar.gz
scummvm-rg350-cfd1ca5fe189236177441648c06049a214bd0fd1.tar.bz2
scummvm-rg350-cfd1ca5fe189236177441648c06049a214bd0fd1.zip
My code really need that free(NULL) is valid BBrox... =)
And arisme you were SOO right! How was my code working before?!? svn-id: r4171
Diffstat (limited to 'config-file.cpp')
-rw-r--r--config-file.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/config-file.cpp b/config-file.cpp
index 7ebd38447d..3049dfb55c 100644
--- a/config-file.cpp
+++ b/config-file.cpp
@@ -28,6 +28,9 @@
#define MAXLINELEN 256
+#define xfree(p) {if (p) free(p);}
+
+
static char *ltrim(char *t)
{
for (; *t && (*t == ' '); t++);
@@ -72,7 +75,7 @@ keys(0), values(0), nkeys(0)
hashconfig::~hashconfig()
{
- free(domain);
+ xfree(domain);
}
bool hashconfig::is_domain(const char *d) const
@@ -99,7 +102,7 @@ const char *hashconfig::set(const char *key, const char *value)
for (i = 0; i < nkeys; i++) {
if (!strcmp(key, keys[i])) {
- free(values[i]);
+ xfree(values[i]);
return values[i] = value ? Scumm::Strdup(value) : 0;
}
}
@@ -135,7 +138,7 @@ void hashconfig::flush(FILE * cfg_file) const
void hashconfig::rename(const char *d)
{
- free(domain);
+ xfree(domain);
domain = d ? Scumm::Strdup(d) : 0;
}
@@ -208,13 +211,13 @@ Config::~Config()
{
int i;
- free(filename);
- free(domain);
+ xfree(filename);
+ xfree(domain);
for (i = 0; i < ndomains; i++) {
delete hash[i];
}
- free(hash);
+ xfree(hash);
}
const char *Config::get(const char *key, const char *d) const
@@ -281,7 +284,7 @@ const char *Config::set(const char *key, int value_i, const char *d)
void Config::set_domain(const char *d)
{
int i;
- free(domain);
+ xfree(domain);
domain = d ? Scumm::Strdup(d) : 0;
for (i = 0; i < ndomains; i++) {
@@ -346,7 +349,7 @@ void Config::delete_domain(const char *d)
void Config::change_filename(const char *f)
{
- free(filename);
+ xfree(filename);
filename = f ? Scumm::Strdup(f) : 0;
}