From 67dbc60e8f5a839aaaf3b218744d026165ac1cdf Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Thu, 8 Jun 2023 09:01:59 +0200 Subject: [PATCH] bytevector-slice: optimize trivial case * libguile/bytevectors.c (scm_bytevector_slice): Return the bytevector directly if start==0 and count==len. --- libguile/bytevectors.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/libguile/bytevectors.c b/libguile/bytevectors.c index 6d9f6476d..6b14c7246 100644 --- a/libguile/bytevectors.c +++ b/libguile/bytevectors.c @@ -357,6 +357,9 @@ SCM_DEFINE (scm_bytevector_slice, "bytevector-slice", 2, 1, 0, else c_size = scm_to_size_t (size); + if (c_offset == 0 && c_size == SCM_BYTEVECTOR_LENGTH (bv)) + return bv; + if (INT_ADD_OVERFLOW (c_offset, c_size) || (c_offset + c_size > SCM_BYTEVECTOR_LENGTH (bv))) scm_out_of_range (FUNC_NAME, offset);