]> git.treefish.org Git - phys/latlib.git/blobdiff - configcache.cpp
...
[phys/latlib.git] / configcache.cpp
index 15c85f9c7cc2086651f176107c4261517fd2e6a6..556dba720c6465460e3f0df6cb249b2afc6d3b6b 100644 (file)
@@ -107,11 +107,22 @@ bool configcache::readConfig()
        {
          if(out) *out->log << "CCACHE: Opening dat-file: " << inFiles.back() << endl << flush;
 
+         openFileName = inFiles.back();
          inFile.open( (DATADIR + "/" + inFiles.back()).c_str(), std::ios::binary );
          inFiles.pop_back();
 
          if( !inFile.is_open() ) continue;
 
+         std::streampos fsize = inFile.tellg();
+          inFile.seekg( 0, std::ios::end );
+          fsize = inFile.tellg() - fsize;
+         if( (int)fsize == 0 ) {
+           *out->log << "CCACHE: dat-file has zero length! Skipping." << endl << flush;
+           inFile.close();
+           continue;
+         }
+         inFile.seekg(0);
+
          inBuffer = new boost::iostreams::filtering_istreambuf;
          inBuffer->push( boost::iostreams::bzip2_decompressor() );
          inBuffer->push(inFile);
@@ -131,7 +142,10 @@ bool configcache::readConfig()
              memcpy(configMem, tmpConfig, configSize);
              return true;
            }
-         else inFile.close(); 
+         else {
+           *out->log << "CCACHE: Closing dat-file: " << openFileName << endl << flush;
+           inFile.close();
+         }
        }
     }
 }