fix double-free when quitting tog's diff view; found by ofree at /home/stsp/src/got/tog/tog.c:3415 3415 free(s->line_offsets); (gdb) bt msg=0x80e2a4cd87e "chunk is already free %p") at /usr/src/lib/libc/stdlib/malloc.c:300 check=1) at /usr/src/lib/libc/stdlib/malloc.c:1070 clear=0, check=<optimized out>, argsz=0) at /usr/src/lib/libc/stdlib/malloc.c:1431 at /usr/src/lib/libc/stdlib/malloc.c:1488 at /home/stsp/src/got/tog/tog.c:3415 at /home/stsp/src/got/tog/tog.c:518 at /home/stsp/src/got/tog/tog.c:954 at /home/stsp/src/got/tog/tog.c:2728 at /home/stsp/src/got/tog/tog.c:5683 (gdb)
diff --git a/tog/tog.c b/tog/tog.c
index 3ba1e43..c75199b 100644
--- a/tog/tog.c
+++ b/tog/tog.c
@@ -3103,6 +3103,7 @@ get_filestream_info(size_t *filesize, int *nlines, off_t **line_offsets,
if (fflush(infile) != 0) {
free(buf);
free(*line_offsets);
+ *line_offsets = NULL;
return got_error_from_errno("fflush");
}
rewind(infile);
@@ -3112,6 +3113,7 @@ get_filestream_info(size_t *filesize, int *nlines, off_t **line_offsets,
free(buf);
free(*line_offsets);
+ *line_offsets = NULL;
return NULL;
}