From 5ec3ac48a80b4ebdf8a895bfa744218d70a15159 Mon Sep 17 00:00:00 2001 From: Calvin Morrison Date: Mon, 7 Apr 2014 15:02:24 -0400 Subject: fix stream counting so it doesn't count over --- src/strstream.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src/strstream.c') diff --git a/src/strstream.c b/src/strstream.c index d1ceb65..3701c92 100644 --- a/src/strstream.c +++ b/src/strstream.c @@ -46,9 +46,9 @@ char **load_mers_from_file(FILE *fh, ssize_t *len) { int main(int argc, char **argv){ - char buffer[BUFSIZ] = { 0 }; + char buffer[BUFSIZ + 1] = { 0 }; char *buf, *start; - ssize_t len = 0; + size_t len = 0; ssize_t mer_len = 0; int save_size = 0; @@ -96,9 +96,13 @@ int main(int argc, char **argv){ // read into "start" (buf + cpy) from tdin while((len = fread(start, 1, cpy_size, stdin)) != 0) { + // strstr isn't smart, and fread doesn't set a '\0', so manually set end of string + if(len < cpy_size) + start[len] = '\0'; + for(i = 0; i < mer_len; i++) { char *p = buffer; - while((p = strstr(p, mers[i])) != NULL) { + while((p = strstr(p, mers[i])) != NULL) { printf("%d %llu\n", i, pos + (p - buffer)); p++; } -- cgit v1.2.3