URI: 
       Fix ensend_{frames,rows,pixels} - blind - suckless command-line video editing utility
  HTML git clone git://git.suckless.org/blind
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit aea3343ed3e0398721ced18a6e3ab72c9ebea850
   DIR parent ff0286325a3dd1f4fe7e29e78341b9bd63e1725c
  HTML Author: Mattias Andrée <maandree@kth.se>
       Date:   Fri, 14 Jul 2017 22:00:38 +0200
       
       Fix ensend_{frames,rows,pixels}
       
       Signed-off-by: Mattias Andrée <maandree@kth.se>
       
       Diffstat:
         M TODO                                |       5 -----
         M src/stream.c                        |       9 ++++++---
       
       2 files changed, 6 insertions(+), 8 deletions(-)
       ---
   DIR diff --git a/TODO b/TODO
       @@ -1,8 +1,3 @@
       -HIGH PRIORITY:
       -        blind-cat-rows and blind-cat-cols randomly produces incorrect results
       -
       -
       -
        blind-transform                affine transformation by matrix multiplication, -t for tiling, -s for
                                        improve quality on downscaling (pixels' neighbours must not change).
        blind-primary-key        replace a primary with transparency, -g for greyscaled images.
   DIR diff --git a/src/stream.c b/src/stream.c
       @@ -282,12 +282,13 @@ ensend_frames(int status, struct stream *stream, int outfd, size_t frames, const
                for (ret = 0; ret < frames; ret++) {
                        for (p = stream->pixel_size; p; p--) {
                                for (h = stream->height; h; h--) {
       -                                for (w = stream->width; w; w -= n, stream->ptr -= n) {
       +                                for (w = stream->width; w; w -= n) {
                                                if (!stream->ptr && !enread_stream(status, stream, w))
                                                        goto done;
                                                n = MIN(stream->ptr, w);
                                                if (outfd >= 0)
                                                        enwriteall(status, outfd, stream->buf, n, outfname);
       +                                        memmove(stream->buf, stream->buf + n, stream->ptr -= n);
                                        }
                                }
                        }
       @@ -308,12 +309,13 @@ ensend_rows(int status, struct stream *stream, int outfd, size_t rows, const cha
        
                for (ret = 0; ret < rows; ret++) {
                        for (p = stream->pixel_size; p; p--) {
       -                        for (w = stream->width; w; w -= n, stream->ptr -= n) {
       +                        for (w = stream->width; w; w -= n) {
                                        if (!stream->ptr && !enread_stream(status, stream, w))
                                                goto done;
                                        n = MIN(stream->ptr, w);
                                        if (outfd >= 0)
                                                enwriteall(status, outfd, stream->buf, n, outfname);
       +                                memmove(stream->buf, stream->buf + n, stream->ptr -= n);
                                }
                        }
                }
       @@ -332,12 +334,13 @@ ensend_pixels(int status, struct stream *stream, int outfd, size_t pixels, const
                size_t p, n, ret;
        
                for (ret = 0; ret < pixels; ret++) {
       -                for (p = stream->pixel_size; p; p -= n, stream->ptr -= n) {
       +                for (p = stream->pixel_size; p; p -= n) {
                                if (!stream->ptr && !enread_stream(status, stream, p))
                                        goto done;
                                n = MIN(stream->ptr, p);
                                if (outfd >= 0)
                                        enwriteall(status, outfd, stream->buf, n, outfname);
       +                        memmove(stream->buf, stream->buf + n, stream->ptr -= n);
                        }
                }