From: Tobias Oetiker Date: Thu, 18 Sep 2008 13:30:48 +0000 (+0000) Subject: Fix for debian bug 498183 ... never *advise after the end of the X-Git-Tag: 1.4.0~323 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a8db8c6f9e9b77454734839d4af3ba54ae4a7186;p=thirdparty%2Frrdtool-1.x.git 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/program@1512 a5681a0c-68f1-0310-ab6d-d61299d08faa --- diff --git a/src/rrd_open.c b/src/rrd_open.c index 51b621f2..af91c7bb 100644 --- a/src/rrd_open.c +++ b/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