changeset 4502:83b0c8b8ce8f

(NEW_PATTERN): Cast alloca return value to proper type. Otherwise, it wouldn't compile with at least /bin/cc on ymp-cray-unicos9.0.2.X. Combine two mostly-identical uses of alloca into one.
author Paul Eggert <eggert@cs.ucla.edu>
date Mon, 04 Aug 2003 23:23:27 +0000
parents 32d063320fde
children c4806038beda
files lib/fnmatch_loop.c
diffstat 1 files changed, 8 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/lib/fnmatch_loop.c
+++ b/lib/fnmatch_loop.c
@@ -1,5 +1,5 @@
 /* Copyright (C) 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000, 2001,
-   2002 Free Software Foundation, Inc.
+   2002, 2003 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -1051,13 +1051,14 @@
 	    /* This means we found the end of the pattern.  */
 #define NEW_PATTERN \
 	    struct patternlist *newp;					      \
+	    size_t plen;						      \
 									      \
-	    if (opt == L('?') || opt == L('@'))				      \
-	      newp = alloca (offsetof (struct patternlist, str)		      \
-			     + (pattern_len * sizeof (CHAR)));		      \
-	    else							      \
-	      newp = alloca (offsetof (struct patternlist, str)		      \
-			     + ((p - startp + 1) * sizeof (CHAR)));	      \
+	    plen = (opt == L('?') || opt == L('@')			      \
+		    ? pattern_len					      \
+		    : p - startp + 1);					      \
+	    newp = (struct patternlist *)				      \
+	      alloca (offsetof (struct patternlist, str)		      \
+		      + (plen * sizeof (CHAR)));			      \
 	    *((CHAR *) MEMPCPY (newp->str, startp, p - startp)) = L('\0');    \
 	    newp->next = NULL;						      \
 	    *lastp = newp;						      \