summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Gorrod <alexander.gorrod@mongodb.com>2015-12-24 09:30:17 +1100
committerAlex Gorrod <alexander.gorrod@mongodb.com>2015-12-24 09:30:17 +1100
commit759748b50f40d1c719cd5af469cf45befde04f3e (patch)
tree4d1ae9dcac2c28175b7f0f2b2928391bf5372d6f
parent5428232f69acc957d740593db43914a972feee65 (diff)
parent948b6f682927b4bf2020783f43bd4aaa8775e4fc (diff)
downloadmongo-759748b50f40d1c719cd5af469cf45befde04f3e.tar.gz
Merge pull request #2408 from wiredtiger/WT-2304
WT-2304 - Fix memory leaking issue in config dump when there are multiple databases
-rw-r--r--bench/wtperf/config.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/bench/wtperf/config.c b/bench/wtperf/config.c
index 33278636bb5..808e85eedae 100644
--- a/bench/wtperf/config.c
+++ b/bench/wtperf/config.c
@@ -54,6 +54,7 @@ static void config_opt_usage(void);
int
config_assign(CONFIG *dest, const CONFIG *src)
{
+ CONFIG_QUEUE_ENTRY *conf_line, *tmp_line;
size_t i, len;
char *newstr, **pstr;
@@ -96,6 +97,18 @@ config_assign(CONFIG *dest, const CONFIG *src)
}
TAILQ_INIT(&dest->stone_head);
+ TAILQ_INIT(&dest->config_head);
+
+ /* Clone the config string information into the new cfg object */
+ TAILQ_FOREACH(conf_line, &src->config_head, c) {
+ len = strlen(conf_line->string);
+ if ((tmp_line = calloc(sizeof(CONFIG_QUEUE_ENTRY), 1)) == NULL)
+ return (enomem(src));
+ if ((tmp_line->string = calloc(len + 1, 1)) == NULL)
+ return (enomem(src));
+ strncpy(tmp_line->string, conf_line->string, len);
+ TAILQ_INSERT_TAIL(&dest->config_head, tmp_line, c);
+ }
return (0);
}