]> wimlib.net Git - wimlib/blobdiff - src/list.h
Fix up return values
[wimlib] / src / list.h
index fec02bbb514053751f8b6e4cb60f85f8bce9bac6..ce2dad2c495d55910a935d4c27b0abba2cb5949a 100644 (file)
@@ -8,20 +8,6 @@
 
 #include <stddef.h>
 
-/**
- * container_of - cast a member of a structure out to the containing structure
- * @ptr:       the pointer to the member.
- * @type:      the type of the container struct this is embedded in.
- * @member:    the name of the member within the struct.
- *
- */
-#ifndef container_of
-#define container_of(ptr, type, member) ({                     \
-       const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
-       (type *)( (char *)__mptr - offsetof(type,member) );})
-#endif
-
-
 struct list_head {
        struct list_head *next, *prev;
 };
@@ -209,6 +195,16 @@ static inline void hlist_del(struct hlist_node *n)
                next->pprev = pprev;
 }
 
+static inline void hlist_safe_del(struct hlist_node *n)
+{
+       struct hlist_node *next = n->next;
+       struct hlist_node **pprev = n->pprev;
+       if (pprev)
+               *pprev = next;
+       if (next)
+               next->pprev = pprev;
+}
+
 static inline void hlist_add_head(struct hlist_node *n, struct hlist_head *h)
 {
        struct hlist_node *first = h->first;