[asterisk-commits] file: trunk r49552 - in /trunk: ./ main/config.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Thu Jan 4 15:34:24 MST 2007


Author: file
Date: Thu Jan  4 16:34:24 2007
New Revision: 49552

URL: http://svn.digium.com/view/asterisk?view=rev&rev=49552
Log:
Merged revisions 49551 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r49551 | file | 2007-01-04 17:28:29 -0500 (Thu, 04 Jan 2007) | 2 lines

Only free comments and line buffer once we reach the first level. (issue #8678 reported by ssokol, fixed by anthonyl)

........

Modified:
    trunk/   (props changed)
    trunk/main/config.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.

Modified: trunk/main/config.c
URL: http://svn.digium.com/view/asterisk/trunk/main/config.c?view=diff&rev=49552&r1=49551&r2=49552
==============================================================================
--- trunk/main/config.c (original)
+++ trunk/main/config.c Thu Jan  4 16:34:24 2007
@@ -86,6 +86,8 @@
 		comment_buffer[0] = 0;
 		comment_buffer_size = CB_INCR;
 		lline_buffer = ast_malloc(CB_INCR);
+		if (!lline_buffer)
+			return;
 		lline_buffer[0] = 0;
 		lline_buffer_size = CB_INCR;
 	} else {
@@ -127,7 +129,7 @@
 	int siz = strlen(str);
 	if (rem < siz+1) {
 		lline_buffer = ast_realloc(lline_buffer, lline_buffer_size + CB_INCR + siz + 1);
-		if (!lline_buffer)
+		if (!lline_buffer) 
 			return;
 		lline_buffer_size += CB_INCR + siz + 1;
 	}
@@ -167,6 +169,7 @@
 struct ast_category {
 	char name[80];
 	int ignored;			/*!< do not let user of the config see this category */
+	int include_level;	
 	struct ast_comment *precomments;
 	struct ast_comment *sameline;
 	struct ast_variable *root;
@@ -339,6 +342,7 @@
 		config->last->next = category;
 	else
 		config->root = category;
+	category->include_level = config->include_level;
 	config->last = category;
 	config->current = category;
 }
@@ -796,8 +800,11 @@
 
 	if (withcomments) {
 		CB_INIT();
-	}
-	
+		if (!lline_buffer || !comment_buffer) {
+			ast_log(LOG_ERROR, "Failed to initialize the comment buffer!\n");
+			return NULL;
+		}
+	}
 #ifdef AST_INCLUDE_GLOB
 	{
 		int glob_ret;
@@ -847,7 +854,8 @@
 		while(!feof(f)) {
 			lineno++;
 			if (fgets(buf, sizeof(buf), f)) {
-				if ( withcomments ) {    
+				if ( withcomments ) {
+					ast_log(LOG_NOTICE, "moo\n");
 					CB_ADD(lline_buffer);       /* add the current lline buffer to the comment buffer */
 					lline_buffer[0] = 0;        /* erase the lline buffer */
 				}
@@ -937,16 +945,16 @@
 			}
 		}
 #endif
-	if (withcomments) {
-		if (comment_buffer) { 
-			free(comment_buffer);
-			free(lline_buffer);
-			comment_buffer=0; 
-			lline_buffer=0; 
-			comment_buffer_size=0; 
-			lline_buffer_size=0;
-		}
-	}
+
+	if (cfg->include_level == 1 && withcomments && comment_buffer) {
+		free(comment_buffer);
+		free(lline_buffer);
+		comment_buffer = NULL;
+		lline_buffer = NULL;
+		comment_buffer_size = 0;
+		lline_buffer_size = 0;
+	}
+	
 	if (count == 0)
 		return NULL;
 



More information about the asterisk-commits mailing list