@@ -22,6 +22,22 @@
// Missing from uthash before 1.9.7
+#define LL_DELETE2(head,del,next) \
+do { \
+ LDECLTYPE(head) _tmp; \
+ if ((head) == (del)) { \
+ (head)=(head)->next; \
+ } else { \
+ _tmp = head; \
+ while (_tmp->next && (_tmp->next != (del))) { \
+ _tmp = _tmp->next; \
+ } \
+ if (_tmp->next) { \
+ _tmp->next = ((del)->next); \
+} while (0)
+
#define LL_FOREACH2(head,el,next) \
for(el=head;el;el=(el)->next)
@@ -77,7 +77,7 @@ void lowlevel_scan_free()
LL_DELETE(devinfo_list, info);
LL_FOREACH_SAFE2(info, info2, tmp2, same_devid_next)
{
- LL_DELETE(info, info2);
+ LL_DELETE2(info, info2, same_devid_next);
lowlevel_devinfo_free(info2);
}