From de4d9ac89f8811448035c5a77f5694dacafbe131 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Mon, 12 Oct 2020 08:37:55 -0400 Subject: graphics: buffer: Fix segfault in resize-buffer! --- chickadee/graphics/buffer.scm | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/chickadee/graphics/buffer.scm b/chickadee/graphics/buffer.scm index 40ebce8..8a30ea3 100644 --- a/chickadee/graphics/buffer.scm +++ b/chickadee/graphics/buffer.scm @@ -234,13 +234,15 @@ resized." (let ((old-bv (buffer-data buffer))) (set-buffer-length! buffer length) (when old-bv - (unmap-buffer! buffer) - ;; TODO: Set map mode in record - (map-buffer! buffer 'write-only) - (let ((new-bv (buffer-data buffer))) - (bytevector-copy! old-bv 0 new-bv 0 - (min (bytevector-length old-bv) - (bytevector-length new-bv)))))) + ;; Need to make a copy of the data. + (let ((old-bv (bytevector-copy old-bv))) + (unmap-buffer! buffer) + ;; TODO: Set map mode in record + (map-buffer! buffer 'write-only) + (let ((new-bv (buffer-data buffer))) + (bytevector-copy! old-bv 0 new-bv 0 + (min (bytevector-length old-bv) + (bytevector-length new-bv))))))) (error "cannot resize static buffer"))) (define-syntax-rule (with-mapped-buffer buffer body ...) -- cgit v1.2.3