aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-17 12:05:38 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-17 12:05:38 +0000
commita0dc5cf5f2da64ac99f29c6af87fdf315736f2dc (patch)
treed7dab931fde665625f8437a49282af03bfc59197 /include
parent287a9494000cd6fc93bd531eb0f1715e796073b5 (diff)
Merged revisions 201262 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r201262 | kpfleming | 2009-06-17 07:04:17 -0500 (Wed, 17 Jun 2009) | 15 lines Merged revisions 201261 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r201261 | kpfleming | 2009-06-17 07:03:25 -0500 (Wed, 17 Jun 2009) | 9 lines Correct AST_LIST_APPEND_LIST behavior when list to be appended is empty. When the list to be appended is empty, and the list to be appended to is *not*, AST_LIST_APPEND_LIST would actually cause the target list to become broken, and no longer have a pointer to its last entry. This patch fixes the problem. (reported by Stanislaw Pitucha on the asterisk-dev mailing list) ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.1@201264 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'include')
-rw-r--r--include/asterisk/linkedlists.h13
1 files changed, 8 insertions, 5 deletions
diff --git a/include/asterisk/linkedlists.h b/include/asterisk/linkedlists.h
index 52d1c5304..1ee524301 100644
--- a/include/asterisk/linkedlists.h
+++ b/include/asterisk/linkedlists.h
@@ -765,15 +765,18 @@ struct { \
* calling this macro (the list entries are \b moved to the target list).
*/
#define AST_LIST_APPEND_LIST(head, list, field) do { \
- if (!(head)->first) { \
+ if (!(list)->first) { \
+ break; \
+ } \
+ if (!(head)->first) { \
(head)->first = (list)->first; \
(head)->last = (list)->last; \
- } else { \
+ } else { \
(head)->last->field.next = (list)->first; \
(head)->last = (list)->last; \
- } \
- (list)->first = NULL; \
- (list)->last = NULL; \
+ } \
+ (list)->first = NULL; \
+ (list)->last = NULL; \
} while (0)
#define AST_RWLIST_APPEND_LIST AST_LIST_APPEND_LIST