From: Lennart Poettering Date: Thu, 13 Nov 2025 11:12:30 +0000 (+0100) Subject: efivars: don't bother with realloc() if we have no interest in the old data X-Git-Tag: v259-rc1~70^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=88e26303ce922bb20327e62cd8fbfa3c997384cd;p=thirdparty%2Fsystemd.git efivars: don't bother with realloc() if we have no interest in the old data We shouldn't ask glibc to keep the old data around (which realloc() is about), given we overwrite it entirely anyway. Let's hence speed things up here, and allow glibc to just allocate a new block for us (and shorten the code a bit) --- diff --git a/src/basic/efivars.c b/src/basic/efivars.c index b5e12eda62c..9687f3d0e64 100644 --- a/src/basic/efivars.c +++ b/src/basic/efivars.c @@ -81,10 +81,10 @@ int efi_get_variable( } /* We want +1 for the read call, and +3 for the additional terminating bytes added below. */ - char *t = realloc(buf, (size_t) st.st_size + MAX(1, 3)); - if (!t) + free(buf); + buf = malloc((size_t) st.st_size + MAX(1, 3)); + if (!buf) return -ENOMEM; - buf = t; const struct iovec iov[] = { { &attr, sizeof(attr) },