Index: libcfa/src/stdlib.hfa
===================================================================
--- libcfa/src/stdlib.hfa	(revision 44225792b92db22552f86008e31661f2e612261e)
+++ libcfa/src/stdlib.hfa	(revision 4803a9016cdba3bca08efbcaa830f1c8726df52b)
@@ -10,6 +10,6 @@
 // Created On       : Thu Jan 28 17:12:35 2016
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Dec  8 18:27:22 2020
-// Update Count     : 524
+// Last Modified On : Sat Dec 12 13:52:34 2020
+// Update Count     : 536
 //
 
@@ -49,5 +49,5 @@
 
 static inline forall( dtype T | sized(T) ) {
-	// Cforall safe equivalents, i.e., implicit size specification
+	// CFA safe equivalents, i.e., implicit size specification
 
 	T * malloc( void ) {
@@ -234,5 +234,5 @@
 
 static inline forall( dtype T | sized(T) ) {
-	// Cforall safe initialization/copy, i.e., implicit size specification, non-array types
+	// CFA safe initialization/copy, i.e., implicit size specification, non-array types
 	T * memset( T * dest, char fill ) {
 		return (T *)memset( dest, fill, sizeof(T) );
@@ -243,5 +243,5 @@
 	} // memcpy
 
-	// Cforall safe initialization/copy, i.e., implicit size specification, array types
+	// CFA safe initialization/copy, i.e., implicit size specification, array types
 	T * amemset( T dest[], char fill, size_t dim ) {
 		return (T *)(void *)memset( dest, fill, dim * sizeof(T) ); // C memset
@@ -253,12 +253,16 @@
 } // distribution
 
-// Cforall deallocation for multiple objects
+// CFA deallocation for multiple objects
+static inline forall( dtype T )							// FIX ME, problems with 0p in list
+void free( T * ptr ) {
+	free( (void *)ptr );								// C free
+} // free
 static inline forall( dtype T, ttype TT | { void free( TT ); } )
-void free( T * addr, TT rest ) {
-	free( ( void *)addr );								// use C free
+void free( T * ptr, TT rest ) {
+	free( ptr );
 	free( rest );
 } // free
 
-// Cforall allocation/deallocation and constructor/destructor, non-array types
+// CFA allocation/deallocation and constructor/destructor, non-array types
 static inline forall( dtype T | sized(T), ttype TT | { void ?{}( T &, TT ); } )
 T * new( TT p ) {
@@ -272,7 +276,6 @@
 		^(*ptr){};										// run destructor
 	} // if
-	free( ptr );
+	free( ptr );										// always call free
 } // delete
-
 static inline forall( dtype T, ttype TT | { void ^?{}( T & ); void delete( TT ); } )
 void delete( T * ptr, TT rest ) {
@@ -281,5 +284,5 @@
 } // delete
 
-// Cforall allocation/deallocation and constructor/destructor, array types
+// CFA allocation/deallocation and constructor/destructor, array types
 forall( dtype T | sized(T), ttype TT | { void ?{}( T &, TT ); } ) T * anew( size_t dim, TT p );
 forall( dtype T | sized(T) | { void ^?{}( T & ); } ) void adelete( T arr[] );
