Index: libcfa/src/stdlib.hfa
===================================================================
--- libcfa/src/stdlib.hfa	(revision 0e7e3c17fceef16604d7a5873373da4a4a38ae9f)
+++ libcfa/src/stdlib.hfa	(revision 856fe3e61a2862cb2fb75b99c62e6a042adeb092)
@@ -10,6 +10,6 @@
 // Created On       : Thu Jan 28 17:12:35 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Apr 16 22:44:05 2020
-// Update Count     : 432
+// Last Modified On : Wed May 13 17:23:51 2020
+// Update Count     : 435
 //
 
@@ -23,11 +23,13 @@
 // Reduce includes by explicitly defining these routines.
 extern "C" {
+	void * aalloc( size_t dim, size_t elemSize );		// CFA heap
+	void * resize( void * oaddr, size_t size );			// CFA heap
 	void * memalign( size_t align, size_t size );		// malloc.h
+	void * amemalign( size_t align, size_t dim, size_t elemSize ); // CFA heap
+	void * cmemalign( size_t align, size_t noOfElems, size_t elemSize ); // CFA heap
+	size_t malloc_size( void * addr );					// CFA heap
 	size_t malloc_usable_size( void * ptr );			// malloc.h
-	size_t malloc_size( void * addr );					// CFA heap
-	void * cmemalign( size_t alignment, size_t noOfElems, size_t elemSize ); // CFA heap
 	void * memset( void * dest, int fill, size_t size ); // string.h
 	void * memcpy( void * dest, const void * src, size_t size ); // string.h
-	void * resize( void * oaddr, size_t size );			// CFA heap
 } // extern "C"
 
@@ -52,4 +54,9 @@
 	} // malloc
 
+	T * aalloc( size_t dim ) {
+		if ( _Alignof(T) <= libAlign() ) return (T *)(void *)aalloc( dim, (size_t)sizeof(T) ); // CFA aalloc
+		else return (T *)amemalign( _Alignof(T), dim, sizeof(T) );
+	} // aalloc
+
 	T * calloc( size_t dim ) {
 		if ( _Alignof(T) <= libAlign() )return (T *)(void *)calloc( dim, sizeof(T) ); // C calloc
@@ -57,4 +64,8 @@
 	} // calloc
 
+	T * resize( T * ptr, size_t size ) {				// CFA realloc, eliminate return-type cast
+		return (T *)(void *)resize( (void *)ptr, size ); // C realloc
+	} // resize
+
 	T * realloc( T * ptr, size_t size ) {				// CFA realloc, eliminate return-type cast
 		return (T *)(void *)realloc( (void *)ptr, size ); // C realloc
@@ -65,4 +76,8 @@
 	} // memalign
 
+	T * amemalign( size_t align, size_t dim ) {
+		return (T *)amemalign( align, dim, sizeof(T) );	// CFA amemalign
+	} // amemalign
+
 	T * cmemalign( size_t align, size_t dim  ) {
 		return (T *)cmemalign( align, dim, sizeof(T) );	// CFA cmemalign
@@ -86,6 +101,5 @@
 
 	T * alloc( size_t dim ) {
-		if ( _Alignof(T) <= libAlign() ) return (T *)(void *)malloc( dim * (size_t)sizeof(T) );
-		else return (T *)memalign( _Alignof(T), dim * sizeof(T) );
+		return aalloc( dim );
 	} // alloc
 
@@ -106,6 +120,5 @@
 			return (T *)(void *)realloc( (void *)ptr, dim * sizeof(T) ); // C realloc
 		} else {
-			struct __Unknown {};
-			return alloc( (__Unknown *)ptr, dim );		// reuse, cheat making T/S different types
+			return resize( ptr, dim * sizeof(T) );		// resize
 		} // if
 	} // alloc
@@ -148,5 +161,5 @@
 	} // alloc_align
 
-	T * alloc_align( T ptr[], size_t align ) {			// aligned realloc array
+	T * alloc_align( T * ptr, size_t align ) {			// aligned realloc array
 		return (T *)(void *)realloc( (void *)ptr, align, sizeof(T) ); // CFA realloc
 	} // alloc_align
