Page MenuHomeFreeBSD

D48207.diff
No OneTemporary

D48207.diff

diff --git a/sys/dev/sound/pcm/channel.h b/sys/dev/sound/pcm/channel.h
--- a/sys/dev/sound/pcm/channel.h
+++ b/sys/dev/sound/pcm/channel.h
@@ -175,6 +175,7 @@
#define CHN_LINK(y) y.link
#define CHN_EMPTY(x, y) SLIST_EMPTY(CHN_HEAD(x, y))
#define CHN_FIRST(x, y) SLIST_FIRST(CHN_HEAD(x, y))
+#define CHN_NEXT(elm, list) SLIST_NEXT((elm), CHN_LINK(list))
#define CHN_FOREACH(x, y, z) \
SLIST_FOREACH(x, CHN_HEAD(y, z), CHN_LINK(z))
@@ -188,8 +189,8 @@
#define CHN_INSERT_AFTER(x, y, z) \
SLIST_INSERT_AFTER(x, y, CHN_LINK(z))
-#define CHN_REMOVE(x, y, z) \
- SLIST_REMOVE(CHN_HEAD(x, z), y, pcm_channel, CHN_LINK(z))
+#define CHN_REMOVE(holder, elm, list) \
+ SLIST_REMOVE(CHN_HEAD(holder, list), elm, pcm_channel, CHN_LINK(list))
#define CHN_INSERT_HEAD_SAFE(x, y, z) do { \
struct pcm_channel *t = NULL; \
@@ -211,14 +212,18 @@
CHN_INSERT_AFTER(x, y, z); \
} while (0)
-#define CHN_REMOVE_SAFE(x, y, z) do { \
- struct pcm_channel *t = NULL; \
- CHN_FOREACH(t, x, z) { \
- if (t == y) \
- break; \
- } \
- if (t == y) \
- CHN_REMOVE(x, y, z); \
+#define CHN_REMOVE_SAFE(holder, elm, list) do { \
+ if (CHN_FIRST(holder, list) == (elm)) { \
+ SLIST_REMOVE_HEAD(CHN_HEAD(holder, list), CHN_LINK(list)); \
+ } else { \
+ struct pcm_channel *t = NULL; \
+ CHN_FOREACH(t, holder, list) { \
+ if (CHN_NEXT(t, list) == (elm)) { \
+ SLIST_REMOVE_AFTER(t, CHN_LINK(list)); \
+ break; \
+ } \
+ } \
+ } \
} while (0)
#define CHN_INSERT_SORT(w, x, y, z) do { \

File Metadata

Mime Type
text/plain
Expires
Thu, Jan 9, 3:53 AM (6 h, 26 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15618649
Default Alt Text
D48207.diff (1 KB)

Event Timeline