mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-10-29 15:36:13 +00:00 
			
		
		
		
	Various cleanups from comments in an email from Luigi Rizzo. Thank you!
- Use a cleaner syntax for declaring the allocation macros - Fix return value for ast_strdup/ast_strndup - remove safe_strdup from app_macro, since ast_strup does the same thing - fix a place in app_queue where ast_calloc+strncpy was used instead of ast_strdup. If you are helping out with these conversions, please watch out for other places where this is done. - add a note to the coding guidelines about the fix to app_queue git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@8065 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
		| @@ -89,11 +89,6 @@ STANDARD_LOCAL_USER; | |||||||
|  |  | ||||||
| LOCAL_USER_DECL; | LOCAL_USER_DECL; | ||||||
|  |  | ||||||
| static char *safe_strdup(const char *s) |  | ||||||
| { |  | ||||||
| 	return s ? strdup(s) : NULL; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| static int macro_exec(struct ast_channel *chan, void *data) | static int macro_exec(struct ast_channel *chan, void *data) | ||||||
| { | { | ||||||
| 	const char *s; | 	const char *s; | ||||||
| @@ -169,17 +164,17 @@ static int macro_exec(struct ast_channel *chan, void *data) | |||||||
| 	} | 	} | ||||||
| 	argc = 1; | 	argc = 1; | ||||||
| 	/* Save old macro variables */ | 	/* Save old macro variables */ | ||||||
| 	save_macro_exten = safe_strdup(pbx_builtin_getvar_helper(chan, "MACRO_EXTEN")); | 	save_macro_exten = ast_strdup(pbx_builtin_getvar_helper(chan, "MACRO_EXTEN")); | ||||||
| 	pbx_builtin_setvar_helper(chan, "MACRO_EXTEN", oldexten); | 	pbx_builtin_setvar_helper(chan, "MACRO_EXTEN", oldexten); | ||||||
|  |  | ||||||
| 	save_macro_context = safe_strdup(pbx_builtin_getvar_helper(chan, "MACRO_CONTEXT")); | 	save_macro_context = ast_strdup(pbx_builtin_getvar_helper(chan, "MACRO_CONTEXT")); | ||||||
| 	pbx_builtin_setvar_helper(chan, "MACRO_CONTEXT", oldcontext); | 	pbx_builtin_setvar_helper(chan, "MACRO_CONTEXT", oldcontext); | ||||||
|  |  | ||||||
| 	save_macro_priority = safe_strdup(pbx_builtin_getvar_helper(chan, "MACRO_PRIORITY")); | 	save_macro_priority = ast_strdup(pbx_builtin_getvar_helper(chan, "MACRO_PRIORITY")); | ||||||
| 	snprintf(pc, sizeof(pc), "%d", oldpriority); | 	snprintf(pc, sizeof(pc), "%d", oldpriority); | ||||||
| 	pbx_builtin_setvar_helper(chan, "MACRO_PRIORITY", pc); | 	pbx_builtin_setvar_helper(chan, "MACRO_PRIORITY", pc); | ||||||
|    |    | ||||||
| 	save_macro_offset = safe_strdup(pbx_builtin_getvar_helper(chan, "MACRO_OFFSET")); | 	save_macro_offset = ast_strdup(pbx_builtin_getvar_helper(chan, "MACRO_OFFSET")); | ||||||
| 	pbx_builtin_setvar_helper(chan, "MACRO_OFFSET", NULL); | 	pbx_builtin_setvar_helper(chan, "MACRO_OFFSET", NULL); | ||||||
|  |  | ||||||
| 	/* Setup environment for new run */ | 	/* Setup environment for new run */ | ||||||
|   | |||||||
| @@ -1709,8 +1709,7 @@ static struct localuser *wait_for_answer(struct queue_ent *qe, struct localuser | |||||||
| 						if (in->cid.cid_ani) { | 						if (in->cid.cid_ani) { | ||||||
| 							if (o->chan->cid.cid_ani) | 							if (o->chan->cid.cid_ani) | ||||||
| 								free(o->chan->cid.cid_ani); | 								free(o->chan->cid.cid_ani); | ||||||
| 							if ((o->chan->cid.cid_ani = ast_calloc(1, strlen(in->cid.cid_ani) + 1))) | 							o->chan->cid.cid_ani = ast_strdup(in->cid.cid_ani); | ||||||
| 								strncpy(o->chan->cid.cid_ani, in->cid.cid_ani, strlen(in->cid.cid_ani) + 1); |  | ||||||
| 						} | 						} | ||||||
| 						if (o->chan->cid.cid_rdnis)  | 						if (o->chan->cid.cid_rdnis)  | ||||||
| 							free(o->chan->cid.cid_rdnis); | 							free(o->chan->cid.cid_rdnis); | ||||||
|   | |||||||
| @@ -386,6 +386,10 @@ argument without generating an error.  The same code can be written as: | |||||||
| 	 | 	 | ||||||
| 	newstr = ast_strdup(str); | 	newstr = ast_strdup(str); | ||||||
|  |  | ||||||
|  | Furthermore, it is unnecessary to have code that malloc/calloc's for the length | ||||||
|  | of a string (+1 for the terminating '\0') and then using strncpy to copy the | ||||||
|  | copy the string into the resulting buffer.  This is the exact same thing as | ||||||
|  | using ast_strdup. | ||||||
|  |  | ||||||
| * CLI Commands | * CLI Commands | ||||||
| -------------- | -------------- | ||||||
|   | |||||||
| @@ -252,9 +252,7 @@ long int ast_random(void); | |||||||
|   The argument and return value are the same as malloc() |   The argument and return value are the same as malloc() | ||||||
| */ | */ | ||||||
| #define ast_malloc(len) \ | #define ast_malloc(len) \ | ||||||
| 	({ \ | 	_ast_malloc((len), __FILE__, __LINE__, __PRETTY_FUNCTION__) | ||||||
| 		(_ast_malloc((len), __FILE__, __LINE__, __PRETTY_FUNCTION__)); \ |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| AST_INLINE_API( | AST_INLINE_API( | ||||||
| void *_ast_malloc(size_t len, const char *file, int lineno, const char *func), | void *_ast_malloc(size_t len, const char *file, int lineno, const char *func), | ||||||
| @@ -279,9 +277,7 @@ void *_ast_malloc(size_t len, const char *file, int lineno, const char *func), | |||||||
|   The arguments and return value are the same as calloc() |   The arguments and return value are the same as calloc() | ||||||
| */ | */ | ||||||
| #define ast_calloc(num, len) \ | #define ast_calloc(num, len) \ | ||||||
| 	({ \ | 	_ast_calloc((num), (len), __FILE__, __LINE__, __PRETTY_FUNCTION__) | ||||||
| 		(_ast_calloc((num), (len), __FILE__, __LINE__, __PRETTY_FUNCTION__)); \ |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| AST_INLINE_API( | AST_INLINE_API( | ||||||
| void *_ast_calloc(size_t num, size_t len, const char *file, int lineno, const char *func), | void *_ast_calloc(size_t num, size_t len, const char *file, int lineno, const char *func), | ||||||
| @@ -306,9 +302,7 @@ void *_ast_calloc(size_t num, size_t len, const char *file, int lineno, const ch | |||||||
|   The arguments and return value are the same as realloc() |   The arguments and return value are the same as realloc() | ||||||
| */ | */ | ||||||
| #define ast_realloc(p, len) \ | #define ast_realloc(p, len) \ | ||||||
| 	({ \ | 	_ast_realloc((p), (len), __FILE__, __LINE__, __PRETTY_FUNCTION__) | ||||||
| 		(_ast_realloc((p), (len), __FILE__, __LINE__, __PRETTY_FUNCTION__)); \ |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| AST_INLINE_API( | AST_INLINE_API( | ||||||
| void *_ast_realloc(void *p, size_t len, const char *file, int lineno, const char *func), | void *_ast_realloc(void *p, size_t len, const char *file, int lineno, const char *func), | ||||||
| @@ -337,12 +331,10 @@ void *_ast_realloc(void *p, size_t len, const char *file, int lineno, const char | |||||||
|   The argument and return value are the same as strdup() |   The argument and return value are the same as strdup() | ||||||
| */ | */ | ||||||
| #define ast_strdup(str) \ | #define ast_strdup(str) \ | ||||||
| 	({ \ | 	_ast_strdup((str), __FILE__, __LINE__, __PRETTY_FUNCTION__) | ||||||
| 		(_ast_strdup((str), __FILE__, __LINE__, __PRETTY_FUNCTION__)); \ |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| AST_INLINE_API( | AST_INLINE_API( | ||||||
| void *_ast_strdup(const char *str, const char *file, int lineno, const char *func), | char *_ast_strdup(const char *str, const char *file, int lineno, const char *func), | ||||||
| { | { | ||||||
| 	char *newstr = NULL; | 	char *newstr = NULL; | ||||||
|  |  | ||||||
| @@ -370,12 +362,10 @@ void *_ast_strdup(const char *str, const char *file, int lineno, const char *fun | |||||||
|   The arguments and return value are the same as strndup() |   The arguments and return value are the same as strndup() | ||||||
| */ | */ | ||||||
| #define ast_strndup(str, len) \ | #define ast_strndup(str, len) \ | ||||||
| 	({ \ | 	_ast_strndup((str), (len), __FILE__, __LINE__, __PRETTY_FUNCTION__) | ||||||
| 		(_ast_strndup((str), (len), __FILE__, __LINE__, __PRETTY_FUNCTION__)); \ |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| AST_INLINE_API( | AST_INLINE_API( | ||||||
| void *_ast_strndup(const char *str, size_t len, const char *file, int lineno, const char *func), | char *_ast_strndup(const char *str, size_t len, const char *file, int lineno, const char *func), | ||||||
| { | { | ||||||
| 	char *newstr = NULL; | 	char *newstr = NULL; | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user