This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[COMMITTED PATCH] Replace an alloca use with a variable-length array.
- From: Roland McGrath <roland at hack dot frob dot com>
- To: "GNU C. Library" <libc-alpha at sourceware dot org>
- Date: Tue, 5 Feb 2013 12:17:38 -0800 (PST)
- Subject: [COMMITTED PATCH] Replace an alloca use with a variable-length array.
I noticed this because alloca was used without making sure it was declared.
But for a simple (and safe) unconditional use like this at function scope,
there is no reason not to just use a variable-length array. The generated
code is perturbed a bit but doesn't seem meaningfully different.
Thanks,
Roland
* elf/dl-hwcaps.c (_dl_important_hwcaps): Use a variable-length array
instead of calling alloca.
--- a/elf/dl-hwcaps.c
+++ b/elf/dl-hwcaps.c
@@ -42,7 +42,6 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
size_t cnt = platform != NULL;
size_t n, m;
size_t total;
- struct r_strlenpair *temp;
struct r_strlenpair *result;
struct r_strlenpair *rp;
char *cp;
@@ -103,7 +102,7 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
++cnt;
/* Create temporary data structure to generate result table. */
- temp = (struct r_strlenpair *) alloca (cnt * sizeof (*temp));
+ struct r_strlenpair temp[cnt];
m = 0;
#if defined NEED_DL_SYSINFO || defined NEED_DL_SYSINFO_DSO
if (dsocaps != NULL)
@@ -199,7 +198,7 @@ _dl_important_hwcaps (const char *platform, size_t platform_len, size_t *sz,
}
/* Fill in the information. This follows the following scheme
- (indeces from TEMP for four strings):
+ (indices from TEMP for four strings):
entry #0: 0, 1, 2, 3 binary: 1111
#1: 0, 1, 3 1101
#2: 0, 2, 3 1011