From: Tobias Oetiker Date: Thu, 6 Sep 2007 08:40:36 +0000 (+0000) Subject: rrd_open.c (rrd_read): Mimicing read() behaviour for EOF case and NULL buffer case. X-Git-Tag: 1.3rc2~96 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=abefc87337f29f632bb34cb812d42a1bf9ad9f0f;p=thirdparty%2Frrdtool-1.x.git rrd_open.c (rrd_read): Mimicing read() behaviour for EOF case and NULL buffer case. -- Bernhard Fischer git-svn-id: svn://svn.oetiker.ch/rrdtool/trunk/program@1197 a5681a0c-68f1-0310-ab6d-d61299d08faa --- diff --git a/src/rrd_open.c b/src/rrd_open.c index 0774bced..c6a2d7d9 100644 --- a/src/rrd_open.c +++ b/src/rrd_open.c @@ -440,8 +440,13 @@ inline ssize_t rrd_read( { #ifdef HAVE_MMAP size_t _cnt = count; - ssize_t _surplus = rrd_file->pos + _cnt - rrd_file->file_len; + ssize_t _surplus; + if (rrd_file->pos > rrd_file->file_len || _cnt == 0) /* EOF */ + return 0; + if (buf == NULL) + return -1; /* EINVAL */ + _surplus = rrd_file->pos + _cnt - rrd_file->file_len; if (_surplus > 0) { /* short read */ _cnt -= _surplus; }