From ba5f12df7039a48f9968e4ac55a5c3ea785f5773 Mon Sep 17 00:00:00 2001 From: oetiker Date: Thu, 18 Sep 2008 13:30:48 +0000 Subject: [PATCH] Fix for debian bug 498183 ... never *advise after the end of the file. On sparc this causes a segfault. Thanks to Sebastian Harl and Jurij Smakov for finding this. git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk@1512 a5681a0c-68f1-0310-ab6d-d61299d08faa --- program/src/rrd_open.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/program/src/rrd_open.c b/program/src/rrd_open.c index 51b621f2..af91c7bb 100644 --- a/program/src/rrd_open.c +++ b/program/src/rrd_open.c @@ -363,14 +363,19 @@ void rrd_dontneed( rrd->rra_def[i].row_cnt * rrd->stat_head->ds_cnt * sizeof(rrd_value_t); } + + if (dontneed_start < rrd_file->file_len) { #ifdef USE_MADVISE - madvise(rrd_file->file_start + dontneed_start, - rrd_file->file_len - dontneed_start, MADV_DONTNEED); + madvise(rrd_file->file_start + dontneed_start, + rrd_file->file_len - dontneed_start, MADV_DONTNEED); #endif #ifdef HAVE_POSIX_FADVISE - posix_fadvise(rrd_file->fd, dontneed_start, - rrd_file->file_len - dontneed_start, POSIX_FADV_DONTNEED); + posix_fadvise(rrd_file->fd, dontneed_start, + rrd_file->file_len - dontneed_start, + POSIX_FADV_DONTNEED); #endif + } + #if defined DEBUG && DEBUG > 1 mincore_print(rrd_file, "after"); #endif -- 2.30.2