From 20e1b9286273082880e5bb33138ca7b581ef71a8 Mon Sep 17 00:00:00 2001 From: Mark Spencer <markster@digium.com> Date: Fri, 25 Apr 2003 20:33:27 +0000 Subject: [PATCH] Allocate comments git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@914 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- config.c | 16 +++++++++------- include/asterisk/config.h | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/config.c b/config.c index 21c8fb9a53..61e77c8587 100755 --- a/config.c +++ b/config.c @@ -66,7 +66,6 @@ static void free_comments(struct ast_comment *com) while (com) { l = com; com = com->next; - free(l->comment); free(l); } } @@ -280,7 +279,7 @@ int ast_category_delete(struct ast_config *cfg, char *category) struct ast_variable *ast_variable_append_modify(struct ast_config *config, char *category, char *variable, char *value, int newcat, int newvar, int move) { - struct ast_variable *v, *pv, *bv, *bpv; + struct ast_variable *v, *pv=NULL, *bv, *bpv; struct ast_category *cat, *pcat; cat = config->root; if (!newcat) { @@ -397,10 +396,13 @@ int ast_category_exist(struct ast_config *config, char *category_name) static struct ast_comment *build_comment(char *cmt) { struct ast_comment *c; - c = malloc(sizeof(struct ast_comment)); + int len = strlen(cmt) + 1; + c = malloc(sizeof(struct ast_comment) + len); if (c) { + /* Memset the header */ memset(c, 0, sizeof(struct ast_comment)); - c->comment = strdup(cmt); + /* Copy the rest */ + strcpy(c->cmt, cmt); } return c; } @@ -557,7 +559,7 @@ static int cfg_process(struct ast_config *tmp, struct ast_category **_tmpc, stru static void dump_comments(FILE *f, struct ast_comment *comment) { while (comment) { - fprintf(f, ";%s", comment->comment); + fprintf(f, ";%s", comment->cmt); comment = comment->next; } } @@ -593,14 +595,14 @@ int ast_save(char *configfile, struct ast_config *cfg, char *generator) dump_comments(f, cat->precomments); /* Dump section with any appropriate comment */ if (cat->sameline) - fprintf(f, "[%s] ; %s\n", cat->name, cat->sameline->comment); + fprintf(f, "[%s] ; %s\n", cat->name, cat->sameline->cmt); else fprintf(f, "[%s]\n", cat->name); var = cat->root; while(var) { dump_comments(f, var->precomments); if (var->sameline) - fprintf(f, "%s %s %s ; %s\n", var->name, (var->object ? "=>" : "="), var->value, var->sameline->comment); + fprintf(f, "%s %s %s ; %s\n", var->name, (var->object ? "=>" : "="), var->value, var->sameline->cmt); else fprintf(f, "%s %s %s\n", var->name, (var->object ? "=>" : "="), var->value); if (var->blanklines) { diff --git a/include/asterisk/config.h b/include/asterisk/config.h index b6875049b6..ff83660424 100755 --- a/include/asterisk/config.h +++ b/include/asterisk/config.h @@ -21,8 +21,8 @@ extern "C" { struct ast_config; struct ast_comment { - char *comment; struct ast_comment *next; + char cmt[0]; }; struct ast_variable { -- GitLab