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: https://origsvn.digium.com/svn/asterisk/branches/1.6.1@201264 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Kevin P. Fleming
2009-06-17 12:05:38 +00:00
parent f5fca5c8e1
commit 1502bfdb70

View File

@@ -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