Index: libcfa/src/stdlib.hfa
===================================================================
--- libcfa/src/stdlib.hfa	(revision 60c5b6dce8bf1bdb1b5087da4164045ec1a875f4)
+++ libcfa/src/stdlib.hfa	(revision d4264e8a120ee554ca06bdced07b5b59cee1a852)
@@ -10,6 +10,6 @@
 // Created On       : Thu Jan 28 17:12:35 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Mon Apr 15 22:11:51 2024
-// Update Count     : 817
+// Last Modified On : Fri Apr 19 09:47:55 2024
+// Update Count     : 826
 //
 
@@ -47,5 +47,5 @@
 
 static inline forall( T & | sized(T) ) {
-	// CFA safe equivalents, i.e., implicit size specification
+	// CFA safe equivalents, i.e., implicit size specification, eliminate return-type cast
 
 	T * malloc( void ) {
@@ -64,7 +64,11 @@
 	} // calloc
 
-	T * resize( T * ptr, size_t size ) {				// CFA resize
-		if ( _Alignof(T) <= libAlign() ) return (T *)resize( (void *)ptr, size ); // CFA resize
+	T * resize( T * ptr, size_t size ) {
+		if ( _Alignof(T) <= libAlign() ) return (T *)resize( (void *)ptr, size ); // C resize
 		else return (T *)resize( (void *)ptr, _Alignof(T), size ); // CFA resize
+	} // resize
+
+	T * resize( T * ptr, size_t alignment, size_t size ) {
+		return (T *)resize( (void *)ptr, alignment, size ); // CFA resize
 	} // resize
 
@@ -74,4 +78,8 @@
 	} // realloc
 
+	T * realloc( T * ptr, size_t alignment, size_t size ) {
+		return (T *)realloc( (void *)ptr, alignment, size ); // CFA realloc
+	} // realloc
+
 	T * reallocarray( T * ptr, size_t dim ) {			// CFA reallocarray
 		if ( _Alignof(T) <= libAlign() ) return (T *)reallocarray( (void *)ptr, dim, sizeof(T) ); // C reallocarray
@@ -79,4 +87,8 @@
 	} // realloc
 
+	T * reallocarray( T * ptr, size_t alignment, size_t dim ) {
+		return (T *)reallocarray( (void *)ptr, alignment, dim ); // CFA reallocarray
+	} // realloc
+
 	T * memalign( size_t align ) {
 		return (T *)memalign( align, sizeof(T) );		// C memalign
@@ -87,5 +99,5 @@
 	} // amemalign
 
-	T * cmemalign( size_t align, size_t dim  ) {
+	T * cmemalign( size_t align, size_t dim ) {
 		return (T *)cmemalign( align, dim, sizeof(T) );	// CFA cmemalign
 	} // cmemalign
@@ -164,7 +176,6 @@
 static inline T_resize ?`resize( void * a )	{ return (T_resize){a}; }
 
-extern "C" ssize_t write(int fd, const void *buf, size_t count);
 static inline forall( T & | sized(T) ) {
-	S_fill(T) ?`fill ( T t ) {
+	S_fill(T) ?`fill( T t ) {
 		S_fill(T) ret = { 't' };
 		size_t size = sizeof(T);
@@ -175,8 +186,8 @@
 		return ret;
 	}
-	S_fill(T) ?`fill ( zero_t ) = void; // FIX ME: remove this once ticket 214 is resolved
-	S_fill(T) ?`fill ( T * a ) { return (S_fill(T)){ 'T', '0', 0, a }; } // FIX ME: remove this once ticket 214 is resolved
-	S_fill(T) ?`fill ( char c ) { return (S_fill(T)){ 'c', c };	}
-	S_fill(T) ?`fill ( T a[], size_t nmemb ) { return (S_fill(T)){ 'a', '0', nmemb * sizeof(T), a }; }
+	S_fill(T) ?`fill( zero_t ) = void; // FIX ME: remove this once ticket 214 is resolved
+	S_fill(T) ?`fill( T * a ) { return (S_fill(T)){ 'T', '0', 0, a }; } // FIX ME: remove this once ticket 214 is resolved
+	S_fill(T) ?`fill( char c ) { return (S_fill(T)){ 'c', c };	}
+	S_fill(T) ?`fill( T a[], size_t nmemb ) { return (S_fill(T)){ 'a', '0', nmemb * sizeof(T), a }; }
 
 	S_realloc(T) ?`realloc ( T * a ) { return (S_realloc(T)){a}; }
@@ -215,29 +226,29 @@
 	} // alloc_internal$
 
-	forall( TT ... | { T * alloc_internal$( void *, T *, size_t, size_t, S_fill(T), TT ); } ) {
-		T * alloc_internal$( void *, T *, size_t Align, size_t Dim, S_fill(T) Fill, T_resize Resize, TT rest ) {
+	forall( List ... | { T * alloc_internal$( void *, T *, size_t, size_t, S_fill(T), List ); } ) {
+		T * alloc_internal$( void *, T *, size_t Align, size_t Dim, S_fill(T) Fill, T_resize Resize, List rest ) {
 	        return alloc_internal$( Resize, (T*)0p, Align, Dim, Fill, rest);
 		}
 
-		T * alloc_internal$( void *, T *, size_t Align, size_t Dim, S_fill(T) Fill, S_realloc(T) Realloc, TT rest ) {
+		T * alloc_internal$( void *, T *, size_t Align, size_t Dim, S_fill(T) Fill, S_realloc(T) Realloc, List rest ) {
 	        return alloc_internal$( (void*)0p, Realloc, Align, Dim, Fill, rest);
 		}
 
-		T * alloc_internal$( void * Resize, T * Realloc, size_t, size_t Dim, S_fill(T) Fill, T_align Align, TT rest ) {
+		T * alloc_internal$( void * Resize, T * Realloc, size_t, size_t Dim, S_fill(T) Fill, T_align Align, List rest ) {
 	        return alloc_internal$( Resize, Realloc, Align, Dim, Fill, rest);
 		}
 
-		T * alloc_internal$( void * Resize, T * Realloc, size_t Align, size_t Dim, S_fill(T), S_fill(T) Fill, TT rest ) {
+		T * alloc_internal$( void * Resize, T * Realloc, size_t Align, size_t Dim, S_fill(T), S_fill(T) Fill, List rest ) {
 	        return alloc_internal$( Resize, Realloc, Align, Dim, Fill, rest );
 		}
 
-	    T * alloc( TT all ) {
+	    T * alloc( List all ) {
 	    	return alloc_internal$( (void*)0p, (T*)0p, (_Alignof(T) > libAlign() ? _Alignof(T) : libAlign()), (size_t)1, (S_fill(T)){'0'}, all );
 	    }
 
-	    T * alloc( size_t dim, TT all ) {
+	    T * alloc( size_t dim, List all ) {
 	    	return alloc_internal$( (void*)0p, (T*)0p, (_Alignof(T) > libAlign() ? _Alignof(T) : libAlign()), dim, (S_fill(T)){'0'}, all );
 	    }
-	} // distribution TT
+	} // distribution List
 } // distribution T
 
@@ -263,10 +274,10 @@
 
 // CFA deallocation for multiple objects
-static inline forall( T & )							// FIX ME, problems with 0p in list
+static inline forall( T & )
 void free( T * ptr ) {
 	free( (void *)ptr );								// C free
 } // free
-static inline forall( T &, TT ... | { void free( TT ); } )
-void free( T * ptr, TT rest ) {
+static inline forall( T &, List ... | { void free( List ); } )
+void free( T * ptr, List rest ) {
 	free( ptr );
 	free( rest );
@@ -274,6 +285,6 @@
 
 // CFA allocation/deallocation and constructor/destructor, non-array types
-static inline forall( T & | sized(T), TT ... | { void ?{}( T &, TT ); } )
-T * new( TT p ) {
+static inline forall( T & | sized(T), Parms ... | { void ?{}( T &, Parms ); } )
+T * new( Parms p ) {
 	return &(*(T *)malloc()){ p };						// run constructor
 } // new
@@ -287,6 +298,6 @@
 	free( ptr );										// always call free
 } // delete
-static inline forall( T &, TT ... | { void ^?{}( T & ); void delete( TT ); } )
-void delete( T * ptr, TT rest ) {
+static inline forall( T &, List ... | { void ^?{}( T & ); void delete( List ); } )
+void delete( T * ptr, List rest ) {
 	delete( ptr );
 	delete( rest );
@@ -294,7 +305,8 @@
 
 // CFA allocation/deallocation and constructor/destructor, array types
-forall( T & | sized(T), TT ... | { void ?{}( T &, TT ); } ) T * anew( size_t dim, TT p );
+forall( T & | sized(T), Parms ... | { void ?{}( T &, Parms ); } ) T * anew( size_t dim, Parms p );
 forall( T & | sized(T) | { void ^?{}( T & ); } ) void adelete( T arr[] );
-forall( T & | sized(T) | { void ^?{}( T & ); }, TT ... | { void adelete( TT ); } ) void adelete( T arr[], TT rest );
+forall( T & | sized(T) | { void ^?{}( T & ); }, List ... | { void adelete( List ); } ) void adelete( T arr[], List rest );
+
 //---------------------------------------
 
