libc/valloc(): Use posix_memalign().
authorSascha Wildner <saw@online.de>
Tue, 19 Aug 2014 20:08:47 +0000 (22:08 +0200)
committerSascha Wildner <saw@online.de>
Tue, 19 Aug 2014 20:11:29 +0000 (22:11 +0200)
Taken-from: FreeBSD

lib/libc/gen/valloc.c

index 3a780e1..b823f75 100644 (file)
  * 2. Redistributions in binary form must reproduce the above copyright
  *    notice, this list of conditions and the following disclaimer in the
  *    documentation and/or other materials provided with the distribution.
- * 3. All advertising materials mentioning features or use of this software
- *    must display the following acknowledgement:
- *     This product includes software developed by the University of
- *     California, Berkeley and its contributors.
  * 4. Neither the name of the University nor the names of its contributors
  *    may be used to endorse or promote products derived from this software
  *    without specific prior written permission.
@@ -31,7 +27,7 @@
  * SUCH DAMAGE.
  *
  * @(#)valloc.c        8.1 (Berkeley) 6/4/93
- * $DragonFly: src/lib/libc/gen/valloc.c,v 1.3 2005/11/13 00:07:42 swildner Exp $
+ * $FreeBSD: head/lib/libc/gen/valloc.c 165903 2007-01-09 00:28:16Z imp $
  */
 
 #include <stdlib.h>
 void *
 valloc(size_t i)
 {
-       long valsiz = getpagesize(), j;
-       void *cp = malloc(i + (valsiz-1));
+       void    *ret;
 
-       j = ((long)cp + (valsiz-1)) &~ (valsiz-1);
-       return ((void *)j);
+       if (posix_memalign(&ret, getpagesize(), i) != 0)
+               ret = NULL;
+
+       return ret;
 }