diff options
-rw-r--r-- | xex.c | 6 | ||||
-rw-r--r-- | xexamine.c | 5 |
2 files changed, 9 insertions, 2 deletions
@@ -165,18 +165,20 @@ int xex_fread_seg_data(xex_segment *seg, FILE *file) { xex_sys_errno = errno; if(xex_verbose) { - fprintf(stderr, "xex_fread_seg_data(): read data:\n"); + fprintf(stderr, "xex_fread_seg_data(): read data, len==%d, res==%d:\n", seg->len, res); xex_print_seg_info(seg); } - if(res == seg->len) + if(res == seg->len) { return 1; + } if(ferror(file)) { xex_errno = XERR_SYSCALL; } else { /* EOF or short read */ xex_errno = XERR_TRUNCATED; + seg->len = res; } return xex_check_seg(seg); @@ -358,6 +358,11 @@ int main(int argc, char **argv) { while(xex_fread_seg(&seg, f)) { segcount++; + xex_check_seg(&seg); + if(xex_errno) { + xex_perror(filename); + } + crc = 0; crc32(seg.object, seg.len, &crc); |