mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-03 20:38:59 +00:00 
			
		
		
		
	clean up last commit ... most notably, there is no reason to do heap
allocations here, and it also included a potential memory leak git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@41269 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		@@ -1045,46 +1045,42 @@ static int handle_save_dialplan(int fd, int argc, char *argv[])
 | 
			
		||||
						}
 | 
			
		||||
 | 
			
		||||
						if (ast_get_extension_priority(p)!=PRIORITY_HINT) {
 | 
			
		||||
							char *tempdata = NULL, *startdata;
 | 
			
		||||
							char *tempdata, *startdata;
 | 
			
		||||
							const char *el = ast_get_extension_label(p);
 | 
			
		||||
							char *label = calloc(1, 128);
 | 
			
		||||
							tempdata = strdup((char *)ast_get_extension_app_data(p));
 | 
			
		||||
							if (tempdata) {
 | 
			
		||||
								startdata = tempdata;
 | 
			
		||||
								while (*tempdata) {
 | 
			
		||||
									if (*tempdata == '|')
 | 
			
		||||
										*tempdata = ',';
 | 
			
		||||
									tempdata++;
 | 
			
		||||
								}
 | 
			
		||||
								tempdata = startdata;
 | 
			
		||||
							char label[128] = "";
 | 
			
		||||
 | 
			
		||||
							tempdata = ast_strdupa(ast_get_extension_app_data(p));
 | 
			
		||||
 | 
			
		||||
							startdata = tempdata;
 | 
			
		||||
							while (*tempdata) {
 | 
			
		||||
								if (*tempdata == '|')
 | 
			
		||||
									*tempdata = ',';
 | 
			
		||||
								tempdata++;
 | 
			
		||||
							}
 | 
			
		||||
							if (el) {
 | 
			
		||||
								if (snprintf(label, 127, "(%s)", el) != (strlen(el)+2)) {
 | 
			
		||||
									incomplete = 1; // error encountered or label is > 125 chars
 | 
			
		||||
									label = NULL;
 | 
			
		||||
								};
 | 
			
		||||
							};
 | 
			
		||||
							if (ast_get_extension_matchcid(p))
 | 
			
		||||
							tempdata = startdata;
 | 
			
		||||
							
 | 
			
		||||
							if (el && (snprintf(label, sizeof(label), "(%s)", el) != (strlen(el) + 2)))
 | 
			
		||||
								incomplete = 1; // error encountered or label is > 125 chars
 | 
			
		||||
 | 
			
		||||
							if (ast_get_extension_matchcid(p)) {
 | 
			
		||||
								fprintf(output, "exten => %s/%s,%d%s,%s(%s)\n",
 | 
			
		||||
								    ast_get_extension_name(p),
 | 
			
		||||
								    ast_get_extension_cidmatch(p),
 | 
			
		||||
								    ast_get_extension_priority(p), (label)?label:"",
 | 
			
		||||
								    ast_get_extension_priority(p), label,
 | 
			
		||||
								    ast_get_extension_app(p),
 | 
			
		||||
								    tempdata);
 | 
			
		||||
							else
 | 
			
		||||
							} else {
 | 
			
		||||
								fprintf(output, "exten => %s,%d%s,%s(%s)\n",
 | 
			
		||||
								    ast_get_extension_name(p),
 | 
			
		||||
								    ast_get_extension_priority(p), (label)?label:"",
 | 
			
		||||
								    ast_get_extension_priority(p), label,
 | 
			
		||||
								    ast_get_extension_app(p),
 | 
			
		||||
								    tempdata);
 | 
			
		||||
							if (tempdata)
 | 
			
		||||
								free(tempdata);
 | 
			
		||||
							if (label)
 | 
			
		||||
								free(label);
 | 
			
		||||
						} else
 | 
			
		||||
							}
 | 
			
		||||
						} else {
 | 
			
		||||
							fprintf(output, "exten => %s,hint,%s\n",
 | 
			
		||||
							    ast_get_extension_name(p),
 | 
			
		||||
							    ast_get_extension_app(p));
 | 
			
		||||
						}
 | 
			
		||||
						
 | 
			
		||||
					}
 | 
			
		||||
					p = ast_walk_extension_priorities(e, p);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user