summaryrefslogtreecommitdiff
path: root/include/asterisk
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2004-12-23 15:11:46 +0000
committerMark Spencer <markster@digium.com>2004-12-23 15:11:46 +0000
commitcecda3fb6797ca6e3da8ff1fd3fe6e79c3b23719 (patch)
treeeadb7c681e0fecd6f7d64f2cfe5c72dedc2cd7c3 /include/asterisk
parentb9c3f3567a0ff290f3db52087c6d6737480e5f7c (diff)
Speed up ast_list macros (bug #3135)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4546 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'include/asterisk')
-rwxr-xr-xinclude/asterisk/linkedlists.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/include/asterisk/linkedlists.h b/include/asterisk/linkedlists.h
index 75f0aa2cf..c9bc7502d 100755
--- a/include/asterisk/linkedlists.h
+++ b/include/asterisk/linkedlists.h
@@ -62,13 +62,15 @@ struct { \
} while (0)
-#define AST_LIST_REMOVE_HEAD(head, field) do { \
+#define AST_LIST_REMOVE_HEAD(head, type, field) ({ \
+ struct type *cur = (head)->first; \
(head)->first = (head)->first->field.next; \
- } while (0)
+ cur; \
+ })
#define AST_LIST_REMOVE(head, elm, type, field) do { \
if ((head)->first == (elm)) { \
- AST_LIST_REMOVE_HEAD((head), field); \
+ AST_LIST_REMOVE_HEAD((head), type, field); \
} \
else { \
struct type *curelm = (head)->first; \