diff options
-rw-r--r-- | firmware/buflib.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/firmware/buflib.c b/firmware/buflib.c index 43fc4bd3de..748e8a2378 100644 --- a/firmware/buflib.c +++ b/firmware/buflib.c | |||
@@ -366,12 +366,13 @@ buflib_buffer_shift(struct buflib_context *ctx, int shift) | |||
366 | { | 366 | { |
367 | memmove(ctx->buf_start + shift, ctx->buf_start, | 367 | memmove(ctx->buf_start + shift, ctx->buf_start, |
368 | (ctx->alloc_end - ctx->buf_start) * sizeof(union buflib_data)); | 368 | (ctx->alloc_end - ctx->buf_start) * sizeof(union buflib_data)); |
369 | ctx->buf_start += shift; | ||
370 | ctx->alloc_end += shift; | ||
371 | shift *= sizeof(union buflib_data); | ||
369 | union buflib_data *handle; | 372 | union buflib_data *handle; |
370 | for (handle = ctx->last_handle; handle < ctx->handle_table; handle++) | 373 | for (handle = ctx->last_handle; handle < ctx->handle_table; handle++) |
371 | if (handle->alloc) | 374 | if (handle->alloc) |
372 | handle->alloc += shift; | 375 | handle->alloc += shift; |
373 | ctx->buf_start += shift; | ||
374 | ctx->alloc_end += shift; | ||
375 | } | 376 | } |
376 | 377 | ||
377 | /* Shift buffered items up by size bytes, or as many as possible if size == 0. | 378 | /* Shift buffered items up by size bytes, or as many as possible if size == 0. |