summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-07-12 07:46:33 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-07-12 07:46:33 +0000
commitc3fbc48d4c2d99a53379917eabfcae4777e4375b (patch)
treebe1333e03ecf150a3de325389e4f4caf453bb9c1
parentcefbf6407ee7f311099c024328a456359d1e2694 (diff)
2008-07-12 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Moved the calls of std::ios::exceptions() inside of try-catch block because if an error occurred in constructor of std::fstream, then exception is thrown immediately when std::ios::exceptions() is called which results unhandled exception and aria2c aborts. * src/DefaultBtProgressInfoFile.cc
-rw-r--r--ChangeLog8
-rw-r--r--src/DefaultBtProgressInfoFile.cc4
2 files changed, 10 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index f144be9b..3bf48511 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2008-07-12 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
+ Moved the calls of std::ios::exceptions() inside of try-catch block
+ because if an error occurred in constructor of std::fstream, then
+ exception is thrown immediately when std::ios::exceptions() is called
+ which results unhandled exception and aria2c aborts.
+ * src/DefaultBtProgressInfoFile.cc
+
+2008-07-12 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
+
Added the test for the previous change in DefaultBtContext.cc
* test/DefaultBtContextTest.cc
diff --git a/src/DefaultBtProgressInfoFile.cc b/src/DefaultBtProgressInfoFile.cc
index 91d580a8..69510e8c 100644
--- a/src/DefaultBtProgressInfoFile.cc
+++ b/src/DefaultBtProgressInfoFile.cc
@@ -91,8 +91,8 @@ void DefaultBtProgressInfoFile::save() {
_logger->info(MSG_SAVING_SEGMENT_FILE, _filename.c_str());
std::string filenameTemp = _filename+"__temp";
std::ofstream o(filenameTemp.c_str(), std::ios::out|std::ios::binary);
- o.exceptions(std::ios::failbit);
try {
+ o.exceptions(std::ios::failbit);
bool torrentDownload = isTorrentDownload();
// file version: 16 bits
// value: '0'
@@ -175,10 +175,10 @@ void DefaultBtProgressInfoFile::load()
{
_logger->info(MSG_LOADING_SEGMENT_FILE, _filename.c_str());
std::ifstream in(_filename.c_str(), std::ios::in|std::ios::binary);
- in.exceptions(std::ios::failbit);
unsigned char* savedInfoHash = 0;
unsigned char* savedBitfield = 0;
try {
+ in.exceptions(std::ios::failbit);
unsigned char version[2];
in.read((char*)version, sizeof(version));
if(DefaultBtProgressInfoFile::V0000 != Util::toHex(version, sizeof(version))) {