fix: add NULL checks for frameBuffer in GfxRenderer

Add missing NULL checks before dereferencing frameBuffer in:
- invertScreen()
- storeBwBuffer()
- restoreBwBuffer()

Follows existing pattern from drawPixel() which already validates.
This commit is contained in:
IFAKA 2025-12-20 19:16:37 +01:00
parent cfe838e03b
commit 6f04718dc0

View File

@ -183,6 +183,10 @@ void GfxRenderer::clearScreen(const uint8_t color) const { einkDisplay.clearScre
void GfxRenderer::invertScreen() const {
uint8_t* buffer = einkDisplay.getFrameBuffer();
if (!buffer) {
Serial.printf("[%lu] [GFX] !! No framebuffer in invertScreen\n", millis());
return;
}
for (int i = 0; i < EInkDisplay::BUFFER_SIZE; i++) {
buffer[i] = ~buffer[i];
}
@ -256,6 +260,10 @@ void GfxRenderer::freeBwBufferChunks() {
*/
void GfxRenderer::storeBwBuffer() {
const uint8_t* frameBuffer = einkDisplay.getFrameBuffer();
if (!frameBuffer) {
Serial.printf("[%lu] [GFX] !! No framebuffer in storeBwBuffer\n", millis());
return;
}
// Allocate and copy each chunk
for (size_t i = 0; i < BW_BUFFER_NUM_CHUNKS; i++) {
@ -306,6 +314,12 @@ void GfxRenderer::restoreBwBuffer() {
}
uint8_t* frameBuffer = einkDisplay.getFrameBuffer();
if (!frameBuffer) {
Serial.printf("[%lu] [GFX] !! No framebuffer in restoreBwBuffer\n", millis());
freeBwBufferChunks();
return;
}
for (size_t i = 0; i < BW_BUFFER_NUM_CHUNKS; i++) {
// Check if chunk is missing
if (!bwBufferChunks[i]) {