view_growbuf_read_until() suggestion

Pavel Tsekov ptsekov at gmx.net
Fri Aug 5 14:21:18 UTC 2005


I forgot to attach the patch in the original message.

On Fri, 5 Aug 2005, Pavel Tsekov wrote:

> Hello Roland,
>
> There is a small "bug" in the new viewer code. When the viewer is used in
> growing buffer mode it incorrectly displays in the status bar ">= size"
> even if the data source was exhausted and despite the fact the the
> size of the whole buffer is known. Please, take a look at the attached
> patch for a idea how to fix it. Of course you could find a better way to
> solve this since you know the code better.
>
-------------- next part --------------
Index: src/view.c
===================================================================
RCS file: /cvsroot/mc/mc/src/view.c,v
retrieving revision 1.313
diff -u -p -r1.313 view.c
--- src/view.c	31 Jul 2005 20:29:35 -0000	1.313
+++ src/view.c	5 Aug 2005 14:02:27 -0000
@@ -403,7 +403,9 @@ view_growbuf_read_until (WView *view, of
 
 	if (view->datasource == DS_STDIO_PIPE) {
 	    nread = fread (p, 1, bytesfree, view->ds_stdio_pipe);
-	    if (nread == 0) {
+	    if (nread > 0)
+		view->growbuf_lastindex += nread;
+	    if (nread < bytesfree) {
 		view->growbuf_finished = TRUE;
 		(void) pclose (view->ds_stdio_pipe);
 		display (view);
@@ -414,14 +416,15 @@ view_growbuf_read_until (WView *view, of
 	} else {
 	    assert (view->datasource == DS_VFS_PIPE);
 	    nread = mc_read (view->ds_vfs_pipe, p, bytesfree);
-	    if (nread == -1 || nread == 0) {
+	    if (nread > 0)
+		view->growbuf_lastindex += nread;
+	    if (nread == -1 || nread < bytesfree) {
 		view->growbuf_finished = TRUE;
 		(void) mc_close (view->ds_vfs_pipe);
 		view->ds_vfs_pipe = -1;
 		return;
 	    }
 	}
-	view->growbuf_lastindex += nread;
     }
 }
 


More information about the mc-devel mailing list