summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/natkeyboard.cpp
diff options
context:
space:
mode:
author hap <happppp@users.noreply.github.com>2025-04-22 03:00:00 +0200
committer hap <happppp@users.noreply.github.com>2025-04-22 03:00:14 +0200
commit25dd24864625a73ab40f3fde8ea1d656ff10f3d8 (patch)
tree1c18110b73363d83ca360bcdd2e8d7ddf4aad72b /src/emu/natkeyboard.cpp
parent6d9f657e95147024f2eee57b0b076f77c98d9c3a (diff)
natkeyboard: limit buffer size to 4*8MB
Diffstat (limited to 'src/emu/natkeyboard.cpp')
-rw-r--r--src/emu/natkeyboard.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/emu/natkeyboard.cpp b/src/emu/natkeyboard.cpp
index 4933de13b38..60149767694 100644
--- a/src/emu/natkeyboard.cpp
+++ b/src/emu/natkeyboard.cpp
@@ -35,6 +35,7 @@
//**************************************************************************
const u32 KEY_BUFFER_CHUNK_SIZE = 0x1000;
+const u32 KEY_BUFFER_MAX_SIZE = 0x800000;
const char32_t INVALID_CHAR = '?';
@@ -829,6 +830,9 @@ void natural_keyboard::internal_post(char32_t ch)
m_buffer[m_bufend] = ch;
if ((m_bufend + 1) % m_buffer.size() == m_bufbegin)
{
+ if (m_buffer.size() >= KEY_BUFFER_MAX_SIZE)
+ return;
+
m_buffer.insert(m_buffer.begin() + m_bufbegin, KEY_BUFFER_CHUNK_SIZE, INVALID_CHAR);
m_bufbegin += KEY_BUFFER_CHUNK_SIZE;
}