framebuffer variant has a hidden bug
size_t PCD8544_SPI_FB::write(uint8_t data)
{
// Non-ASCII characters are not supported.
if (data < 0x20 || data > 0x7F) return 0;
memcpy_P(this->m_Buffer + this->m_Position, ASCII[data - 0x20], 5);
this->m_Buffer[this->m_Position+5] = 0x00;
this->m_Position += 6;
if (this->m_Position >= BUF_LEN) this->m_Position -= BUF_LEN;
//this->m_Position %= BUF_LEN;
return 1;
}
before the memcpy you need to check that m_Buffer + this->m_Position ... m_Buffer + this->m_Position +5 are valid positions ....
otherwise you copy beyond the buffer ...