diff options
Diffstat (limited to 'pat.cpp')
-rw-r--r-- | pat.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
@@ -463,7 +463,17 @@ void CFilePatternSource::open() { } } is_open_ = true; - compressed_ ? gzbuffer(zfp_, 64*1024) : setvbuf(fp_, buf_, _IOFBF, 64*1024); + if (compressed_) { +#if ZLIB_VERNUM < 0x1235 + cerr << "Warning: gzbuffer added in zlib v1.2.3.5. Unable to change " + "buffer size from default of 8192." << endl; +#else + gzbuffer(zfp_, 64*1024); +#endif + } + else { + setvbuf(fp_, buf_, _IOFBF, 64*1024); + } return; } cerr << "Error: No input read files were valid" << endl; @@ -672,6 +682,10 @@ pair<bool, int> FastaPatternSource::nextBatchFromFile( buf.append(c); } } + // Immediate EOF case + if(done && readbuf[readi-1].readOrigBuf.length() == 1) { + readi--; + } return make_pair(done, readi); } @@ -1099,7 +1113,7 @@ pair<bool, int> TabbedPatternSource::nextBatchFromFile( readbuf[readi].readOrigBuf.append(c); c = getc_wrapper(); } - while(c >= 0 && (c == '\n' || c == '\r')) { + while(c >= 0 && (c == '\n' || c == '\r') && readi < pt.max_buf_ - 1) { c = getc_wrapper(); } } |