diff options
-rw-r--r-- | zaptel.c | 10 |
1 files changed, 6 insertions, 4 deletions
@@ -576,19 +576,21 @@ static int zaptel_proc_read(char *page, char **start, off_t off, int count, int } len += sprintf(page + len, "\n"); } - if ( len <= off ) /* If everything printed so far is before beginning of request */ - { + if (len <= off) { /* If everything printed so far is before beginning of request */ off -= len; len = 0; } + if (len > off+count) /* stop if we've already generated enough */ + break; } } - if ( len <= off ) /* If everything printed so far is before beginning of request */ - { + if (len <= off) { /* If everything printed so far is before beginning of request */ off -= len; len = 0; } *start = page + off; + len -= off; /* un-count any remaining offset */ + if (len > count) len = count; /* don't return bytes not asked for */ return len; } #endif |