--- ddrescue-1.16/ddrescue.h	2012-06-04 11:43:07.000000000 +0300
+++ ddrescue-1.16/ddrescue.h	2013-03-16 17:42:05.000000000 +0200
@@ -26,6 +26,7 @@
 private:
   const long long offset_;		// outfile offset (opos - ipos);
   long long current_pos_;
+  bool logfile_exists_;
   long long logfile_isize_;
   Status current_status_;
   Domain & domain_;			// rescue domain
@@ -70,7 +71,7 @@
   long long offset() const { return offset_; }
   const char * final_msg() const { return final_msg_; }
   int final_errno() const { return final_errno_; }
-  bool logfile_exists() const { return ( logfile_isize_ > 0 ); }
+  bool logfile_exists() const { return logfile_exists_; }
   long long logfile_isize() const { return logfile_isize_; }
 
   void current_pos( const long long pos ) { current_pos_ = pos; }
--- ddrescue-1.16/logbook.cc	2012-06-04 11:43:07.000000000 +0300
+++ ddrescue-1.16/logbook.cc	2013-03-16 17:40:43.000000000 +0200
@@ -219,7 +219,7 @@
                   Domain & dom, const char * const logname,
                   const int cluster, const int hardbs,
                   const bool complete_only, const bool do_not_read )
-  : offset_( offset ), current_pos_( 0 ), logfile_isize_( 0 ),
+  : offset_( offset ), current_pos_( 0 ), logfile_exists_( false ), logfile_isize_( 0 ),
     current_status_( copying ), domain_( dom ), filename_( logname ),
     hardbs_( hardbs ), softbs_( cluster * hardbs ),
     final_msg_( 0 ), final_errno_( 0 ), index_( 0 ),
@@ -237,7 +237,7 @@
 
   if( !domain_.crop_by_file_size( isize ) ) std::exit( 1 );
   if( filename_ && !do_not_read &&
-      read_logfile( filename_, sblock_vector, current_pos_, current_status_ ) &&
+      ( logfile_exists_ = read_logfile( filename_, sblock_vector, current_pos_, current_status_ ) ) &&
       sblock_vector.size() )
     logfile_isize_ = sblock_vector.back().end();
   if( !complete_only ) extend_sblock_vector( sblock_vector, isize );
