Browse Source

Prevent crashes due to missing or corrupted blk????.dat records

In LoadExternalBlockFile(), errors are already caught... silently.
Add a warning message, even though we do not abort the program due to
load error.
0.8
Jeff Garzik 13 years ago committed by Jeff Garzik
parent
commit
8fe791e4e2
  1. 5
      src/main.cpp
  2. 15
      src/main.h

5
src/main.cpp

@ -2133,8 +2133,9 @@ bool LoadExternalBlockFile(FILE* fileIn) @@ -2133,8 +2133,9 @@ bool LoadExternalBlockFile(FILE* fileIn)
}
}
}
catch (std::exception &e)
{
catch (std::exception &e) {
printf("%s() : Deserialize or I/O error caught during load\n",
__PRETTY_FUNCTION__);
}
}
printf("Loaded %i blocks from external file\n", nLoaded);

15
src/main.h

@ -593,7 +593,13 @@ public: @@ -593,7 +593,13 @@ public:
// Read transaction
if (fseek(filein, pos.nTxPos, SEEK_SET) != 0)
return error("CTransaction::ReadFromDisk() : fseek failed");
filein >> *this;
try {
filein >> *this;
}
catch (std::exception &e) {
return error("%s() : deserialize or I/O error", __PRETTY_FUNCTION__);
}
// Return file pointer
if (pfileRet)
@ -969,7 +975,12 @@ public: @@ -969,7 +975,12 @@ public:
filein.nType |= SER_BLOCKHEADERONLY;
// Read block
filein >> *this;
try {
filein >> *this;
}
catch (std::exception &e) {
return error("%s() : deserialize or I/O error", __PRETTY_FUNCTION__);
}
// Check the header
if (!CheckProofOfWork(GetHash(), nBits))

Loading…
Cancel
Save