mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-22 20:56:39 +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