tdb2: fix internal tdb_write_convert() error handling in tdb_open()
authorRusty Russell <rusty@rustcorp.com.au>
Tue, 13 Sep 2011 21:37:13 +0000 (07:07 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Tue, 13 Sep 2011 21:37:13 +0000 (07:07 +0930)
As noted, failtest was taking a long time, because a failure injected here
was not detected.

(Imported from CCAN commit 51f592dfcda4d58d6b9d8134b6e1aff791dc40f2)

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
lib/tdb2/open.c

index 63076ec77f815680fbe03280a56091885446ec83..43a9a2b40e01197b1aed3abbfcf4eac2077f22d9 100644 (file)
@@ -550,10 +550,11 @@ struct tdb_context *tdb_open(const char *name, int tdb_flags,
        /* Clear any features we don't understand. */
        if ((open_flags & O_ACCMODE) != O_RDONLY) {
                hdr.features_used &= TDB_FEATURE_MASK;
-               if (tdb_write_convert(tdb, offsetof(struct tdb_header,
-                                                   features_used),
-                                     &hdr.features_used,
-                                     sizeof(hdr.features_used)) == -1)
+               ecode = tdb_write_convert(tdb, offsetof(struct tdb_header,
+                                                       features_used),
+                                         &hdr.features_used,
+                                         sizeof(hdr.features_used));
+               if (ecode != TDB_SUCCESS)
                        goto fail;
        }