libdpkg: Close the file descriptor just after slurping it in parsedb()
authorGuillem Jover <guillem@debian.org>
Fri, 5 Aug 2011 04:03:02 +0000 (06:03 +0200)
committerGuillem Jover <guillem@debian.org>
Fri, 5 Aug 2011 04:41:24 +0000 (06:41 +0200)
lib/dpkg/parse.c

index 7ff204a..d05e996 100644 (file)
@@ -482,6 +482,10 @@ int parsedb(const char *filename, enum parsedbflags flags,
     data = ps.dataptr = ps.endptr = NULL;
   }
 
+  pop_cleanup(ehflag_normaltidy);
+  if (close(fd))
+    ohshite(_("failed to close after read: `%.255s'"), filename);
+
   pdone= 0;
 
   /* Loop per package. */
@@ -524,8 +528,6 @@ int parsedb(const char *filename, enum parsedbflags flags,
 #endif
   }
   varbuf_destroy(&fs.value);
-  pop_cleanup(ehflag_normaltidy);
-  if (close(fd)) ohshite(_("failed to close after read: `%.255s'"),filename);
   if (donep && !pdone) ohshit(_("no package information in `%.255s'"),filename);
 
   return pdone;