Просмотр исходного кода

simplify code to make compilers happy

Does the same as before, but is a bit simpler on the logic for humans as
well as compilers. scan-build complained about it at least with:
"Result of operation is garbage or undefined"

Reported-By: scan-build
David Kalnischkies лет назад: 12
Родитель
Сommit
6008b79adf
1 измененных файлов с 9 добавлено и 3 удалено
  1. 9 3
      apt-pkg/contrib/fileutl.cc

+ 9 - 3
apt-pkg/contrib/fileutl.cc

@@ -1594,11 +1594,17 @@ unsigned long long FileFd::Tell()
 unsigned long long FileFd::FileSize()
 {
    struct stat Buf;
-   if ((d == NULL || d->pipe == false) && fstat(iFd,&Buf) != 0)
-      return FileFdErrno("fstat","Unable to determine the file size");
+
+   bool ispipe = (d != NULL && d->pipe == true);
+   if (ispipe == false)
+   {
+      if (fstat(iFd,&Buf) != 0)
+	 return FileFdErrno("fstat","Unable to determine the file size");
+      ispipe = S_ISFIFO(Buf.st_mode);
+   }
 
    // for compressor pipes st_size is undefined and at 'best' zero
-   if ((d != NULL && d->pipe == true) || S_ISFIFO(Buf.st_mode))
+   if (ispipe == true)
    {
       // we set it here, too, as we get the info here for free
       // in theory the Open-methods should take care of it already