DEVEL15-h-enum-r-avoid-extra-hold-20061008
authorDerrick Brashear <shadow@dementia.org>
Mon, 9 Oct 2006 04:24:51 +0000 (04:24 +0000)
committerDerrick Brashear <shadow@dementia.org>
Mon, 9 Oct 2006 04:24:51 +0000 (04:24 +0000)
FIXES 40699

avoid orphaning an extra hold

(cherry picked from commit 747a8d8f41a34290c207327541372b4e1fcb0dec)

src/viced/host.c

index 159f4ed..38b21fc 100644 (file)
@@ -1122,8 +1122,11 @@ h_Enumerate_r(int (*proc) (), struct host *enumstart, char *param)
        held = (*proc) (host, held, param);
        if (!H_ENUMERATE_ISSET_HELD(held))
            h_Release_r(host); /* this might free up the host */
-       if (H_ENUMERATE_ISSET_BAIL(held))
+       if (H_ENUMERATE_ISSET_BAIL(held)) {
+           if (!H_ENUMERATE_ISSET_HELD(nheld))
+               h_Release_r(next); /* this might free up the host */
            break;
+       }
     }
 }                              /*h_Enumerate_r */