X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=tape-src%2Foutput-file.c;h=d4e4284d80c9af6fd2620e6241b66deb36f61f41;hb=d3b2175e084f88c8736ad7073eacbf4670147aec;hp=63e00d9d771a168026c76950dce6dc42ebf64aa9;hpb=12179dea039515c06168c0037d048566a3f623de;p=debian%2Famanda diff --git a/tape-src/output-file.c b/tape-src/output-file.c index 63e00d9..d4e4284 100644 --- a/tape-src/output-file.c +++ b/tape-src/output-file.c @@ -355,11 +355,16 @@ file_open( if (volume_info[fd].fd >= 0 && fi->ri_count == 0 && (rfd = open(recordfilename, O_RDONLY)) >= 0) { for (; (line = areads(rfd)) != NULL; free(line)) { - n = sscanf(line, - OFF_T_FMT " " OFF_T_FMT " " SIZE_T_FMT, - (OFF_T_FMT_TYPE *)&start_record, - (OFF_T_FMT_TYPE *)&end_record, - (SIZE_T_FMT_TYPE *)&record_size); + /* We play this game because OFF_T_FMT_TYPE is not + necessarily the same as off_t, and we need to cast the + actual value (not just the pointer. */ + OFF_T_FMT_TYPE start_record_ = (OFF_T_FMT_TYPE)0; + OFF_T_FMT_TYPE end_record_ = (OFF_T_FMT_TYPE)0; + n = sscanf(line, OFF_T_FMT " " OFF_T_FMT " " SIZE_T_FMT, + &start_record_, &end_record_, &record_size); + start_record = (off_t)start_record_; + end_record = (off_t)end_record_; + if (n == 3) { ri_p = &fi->ri; amtable_alloc((void **)ri_p,