From 20cb5d8552d8d43763ca6fdfa0007f2acefe93c8 Mon Sep 17 00:00:00 2001 From: Eric Helgeson Date: Mon, 23 May 2022 17:13:09 -0500 Subject: [PATCH] Prepend the header to the buffer data --- src/BlueSCSI.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/BlueSCSI.cpp b/src/BlueSCSI.cpp index c229701..d7d81ad 100644 --- a/src/BlueSCSI.cpp +++ b/src/BlueSCSI.cpp @@ -1407,14 +1407,17 @@ byte onReadBuffer(byte mode, uint32_t allocLength) if (mode == MODE_COMBINED_HEADER_DATA) { - uint32_t bufCapacity = sizeof(m_scsi_buf) - 4; + uint32_t bufCapacity = sizeof(m_scsi_buf); + byte scsi_buf_response[bufCapacity + 4]; // four byte read buffer header - m_scsi_buf[0] = 0; - m_scsi_buf[1] = (bufCapacity >> 16) & 0xff; - m_scsi_buf[2] = (bufCapacity >> 8) & 0xff; - m_scsi_buf[3] = bufCapacity & 0xff; + scsi_buf_response[0] = 0; + scsi_buf_response[1] = (bufCapacity >> 16) & 0xff; + scsi_buf_response[2] = (bufCapacity >> 8) & 0xff; + scsi_buf_response[3] = bufCapacity & 0xff; + // actual data + memcpy((&scsi_buf_response[4]), m_scsi_buf, bufCapacity); - writeDataPhase(allocLength, m_scsi_buf); + writeDataPhase(sizeof(scsi_buf_response), scsi_buf_response); #if DEBUG > 0 for (unsigned i = 0; i < allocLength; i++) {