refactor: explicitly abort on OOM condition (#26330)

assert() would not abort in release builds, meaning an OOM condition
would be undetected.
This commit is contained in:
Gregory Anders 2023-11-30 11:05:33 -06:00 committed by GitHub
parent f5573fba3d
commit 7feed6ccb7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -700,12 +700,12 @@ static void handle_raw_buffer(TermInput *input, bool force)
if (size > termkey_get_buffer_remaining(input->tk)) { if (size > termkey_get_buffer_remaining(input->tk)) {
// We are processing a very long escape sequence. Increase termkey's // We are processing a very long escape sequence. Increase termkey's
// internal buffer size. We don't handle out of memory situations so // internal buffer size. We don't handle out of memory situations so
// assert the result // abort if it fails
const size_t delta = size - termkey_get_buffer_remaining(input->tk); const size_t delta = size - termkey_get_buffer_remaining(input->tk);
const size_t bufsize = termkey_get_buffer_size(input->tk); const size_t bufsize = termkey_get_buffer_size(input->tk);
const bool success = termkey_set_buffer_size(input->tk, MAX(bufsize + delta, bufsize * 2)); if (!termkey_set_buffer_size(input->tk, MAX(bufsize + delta, bufsize * 2))) {
assert(success); abort();
(void)success; }
} }
size_t consumed = termkey_push_bytes(input->tk, ptr, size); size_t consumed = termkey_push_bytes(input->tk, ptr, size);
@ -730,9 +730,9 @@ static void handle_raw_buffer(TermInput *input, bool force)
if (tk_count < INPUT_BUFFER_SIZE && tk_size > INPUT_BUFFER_SIZE) { if (tk_count < INPUT_BUFFER_SIZE && tk_size > INPUT_BUFFER_SIZE) {
// If the termkey buffer was resized to handle a large input sequence then // If the termkey buffer was resized to handle a large input sequence then
// shrink it back down to its original size. // shrink it back down to its original size.
const bool success = termkey_set_buffer_size(input->tk, INPUT_BUFFER_SIZE); if (!termkey_set_buffer_size(input->tk, INPUT_BUFFER_SIZE)) {
assert(success); abort();
(void)success; }
} }
} }