summaryrefslogtreecommitdiff
path: root/pat.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pat.cpp')
-rw-r--r--pat.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/pat.cpp b/pat.cpp
index e5f387b..6240eb7 100644
--- a/pat.cpp
+++ b/pat.cpp
@@ -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();
}
}