diff options
Diffstat (limited to 'src/main/extractor_datasource.c')
-rw-r--r-- | src/main/extractor_datasource.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/main/extractor_datasource.c b/src/main/extractor_datasource.c index 60dbbe8..a730c48 100644 --- a/src/main/extractor_datasource.c +++ b/src/main/extractor_datasource.c | |||
@@ -406,7 +406,7 @@ bfds_read (struct BufferedFileDataSource *bfds, | |||
406 | size_t avail; | 406 | size_t avail; |
407 | size_t ret; | 407 | size_t ret; |
408 | 408 | ||
409 | old_off = bfds->fpos + bfds->buffer_pos + bfds->buffer_bytes; | 409 | old_off = bfds->fpos + bfds->buffer_pos; |
410 | if (old_off == bfds->fsize) | 410 | if (old_off == bfds->fsize) |
411 | return 0; /* end of stream */ | 411 | return 0; /* end of stream */ |
412 | ret = 0; | 412 | ret = 0; |
@@ -414,7 +414,7 @@ bfds_read (struct BufferedFileDataSource *bfds, | |||
414 | { | 414 | { |
415 | if ( (bfds->buffer_bytes == bfds->buffer_pos) && | 415 | if ( (bfds->buffer_bytes == bfds->buffer_pos) && |
416 | (0 != bfds_pick_next_buffer_at (bfds, | 416 | (0 != bfds_pick_next_buffer_at (bfds, |
417 | bfds->fpos + bfds->buffer_pos + bfds->buffer_bytes)) ) | 417 | bfds->fpos + bfds->buffer_bytes)) ) |
418 | { | 418 | { |
419 | /* revert to original position, invalidate buffer */ | 419 | /* revert to original position, invalidate buffer */ |
420 | bfds->fpos = old_off; | 420 | bfds->fpos = old_off; |
@@ -1053,8 +1053,12 @@ EXTRACTOR_datasource_create_from_file_ (const char *filename, | |||
1053 | int fd; | 1053 | int fd; |
1054 | struct stat sb; | 1054 | struct stat sb; |
1055 | int64_t fsize; | 1055 | int64_t fsize; |
1056 | int winmode = 0; | ||
1057 | #if WINDOWS | ||
1058 | winmode = O_BINARY; | ||
1059 | #endif | ||
1056 | 1060 | ||
1057 | if (-1 == (fd = open (filename, O_RDONLY | O_LARGEFILE))) | 1061 | if (-1 == (fd = open (filename, O_RDONLY | O_LARGEFILE | winmode))) |
1058 | { | 1062 | { |
1059 | LOG_STRERROR_FILE ("open", filename); | 1063 | LOG_STRERROR_FILE ("open", filename); |
1060 | return NULL; | 1064 | return NULL; |