Index: tests/heap.cfa
===================================================================
--- tests/heap.cfa	(revision 0c760db86f1f2ee469c1e387078ce05d5a9633bc)
+++ tests/heap.cfa	(revision 25cbd99937e781b66acabb0012288112de646130)
@@ -10,6 +10,6 @@
 // Created On       : Tue Nov  6 17:54:56 2018
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Nov 24 12:34:51 2019
-// Update Count     : 28
+// Last Modified On : Mon Aug  3 16:40:06 2020
+// Update Count     : 54
 // 
 
@@ -75,5 +75,4 @@
 		size_t s = (i + 1) * 20;
 		char * area = (char *)malloc( s );
-		if ( area == 0p ) abort( "malloc/free out of memory" );
 		area[0] = '\345'; area[s - 1] = '\345';			// fill first/last
 		area[malloc_usable_size( area ) - 1] = '\345';	// fill ultimate byte
@@ -84,5 +83,4 @@
 		size_t s = i + 1;								// +1 to make initialization simpler
 		locns[i] = (char *)malloc( s );
-		if ( locns[i] == 0p ) abort( "malloc/free out of memory" );
 		locns[i][0] = '\345'; locns[i][s - 1] = '\345';	// fill first/last
 		locns[i][malloc_usable_size( locns[i] ) - 1] = '\345'; // fill ultimate byte
@@ -100,5 +98,4 @@
 		size_t s = i + default_mmap_start();			// cross over point
 		char * area = (char *)malloc( s );
-		if ( area == 0p ) abort( "malloc/free out of memory" );
 		area[0] = '\345'; area[s - 1] = '\345';			// fill first/last
 		area[malloc_usable_size( area ) - 1] = '\345';	// fill ultimate byte
@@ -109,5 +106,4 @@
 		size_t s = i + default_mmap_start();			// cross over point
 		locns[i] = (char *)malloc( s );
-		if ( locns[i] == 0p ) abort( "malloc/free out of memory" );
 		locns[i][0] = '\345'; locns[i][s - 1] = '\345';	// fill first/last
 		locns[i][malloc_usable_size( locns[i] ) - 1] = '\345'; // fill ultimate byte
@@ -125,7 +121,6 @@
 		size_t s = (i + 1) * 20;
 		char * area = (char *)calloc( 5, s );
-		if ( area == 0p ) abort( "calloc/free out of memory" );
 		if ( area[0] != '\0' || area[s - 1] != '\0' ||
-			 area[malloc_usable_size( area ) - 1] != '\0' ||
+			 area[malloc_size( area ) - 1] != '\0' ||
 			 ! malloc_zero_fill( area ) ) abort( "calloc/free corrupt storage1" );
 		area[0] = '\345'; area[s - 1] = '\345';			// fill first/last
@@ -137,7 +132,6 @@
 		size_t s = i + 1;
 		locns[i] = (char *)calloc( 5, s );
-		if ( locns[i] == 0p ) abort( "calloc/free out of memory" );
 		if ( locns[i][0] != '\0' || locns[i][s - 1] != '\0' ||
-			 locns[i][malloc_usable_size( locns[i] ) - 1] != '\0' ||
+			 locns[i][malloc_size( locns[i] ) - 1] != '\0' ||
 			 ! malloc_zero_fill( locns[i] ) ) abort( "calloc/free corrupt storage2" );
 		locns[i][0] = '\345'; locns[i][s - 1] = '\345';	// fill first/last
@@ -156,7 +150,6 @@
 		size_t s = i + default_mmap_start();			// cross over point
 		char * area = (char *)calloc( 1, s );
-		if ( area == 0p ) abort( "calloc/free out of memory" );
 		if ( area[0] != '\0' || area[s - 1] != '\0' ) abort( "calloc/free corrupt storage4.1" );
-		if ( area[malloc_usable_size( area ) - 1] != '\0' ) abort( "calloc/free corrupt storage4.2" );
+		if ( area[malloc_size( area ) - 1] != '\0' ) abort( "calloc/free corrupt storage4.2" );
 		if ( ! malloc_zero_fill( area ) ) abort( "calloc/free corrupt storage4.3" );
 		area[0] = '\345'; area[s - 1] = '\345';			// fill first/last
@@ -168,7 +161,6 @@
 		size_t s = i + default_mmap_start();			// cross over point
 		locns[i] = (char *)calloc( 1, s );
-		if ( locns[i] == 0p ) abort( "calloc/free out of memory" );
 		if ( locns[i][0] != '\0' || locns[i][s - 1] != '\0' ||
-			 locns[i][malloc_usable_size( locns[i] ) - 1] != '\0' ||
+			 locns[i][malloc_size( locns[i] ) - 1] != '\0' ||
 			 ! malloc_zero_fill( locns[i] ) ) abort( "calloc/free corrupt storage5" );
 		locns[i][0] = '\345'; locns[i][s - 1] = '\345';	// fill first/last
@@ -188,5 +180,4 @@
 		for ( s; 1 ~ NoOfAllocs ) {						// allocation of size 0 can return null
 			char * area = (char *)memalign( a, s );
-			if ( area == 0p ) abort( "memalign/free out of memory" );
 			//sout | i | area;
 			if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
@@ -206,5 +197,4 @@
 			size_t s = i + default_mmap_start();		// cross over point
 			char * area = (char *)memalign( a, s );
-			if ( area == 0p ) abort( "memalign/free out of memory" );
 			//sout | i | area;
 			if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
@@ -222,7 +212,6 @@
 		// initial N byte allocation
 		char * area = (char *)calloc( 5, i );
-		if ( area == 0p ) abort( "calloc/realloc/free out of memory" );
 		if ( area[0] != '\0' || area[i - 1] != '\0' ||
-			 area[malloc_usable_size( area ) - 1] != '\0' ||
+			 area[malloc_size( area ) - 1] != '\0' ||
 			 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage1" );
 
@@ -230,7 +219,6 @@
 		for ( s; i ~ 256 * 1024 ~ 26 ) {				// start at initial memory request
 			area = (char *)realloc( area, s );			// attempt to reuse storage
-			if ( area == 0p ) abort( "calloc/realloc/free out of memory" );
 			if ( area[0] != '\0' || area[s - 1] != '\0' ||
-				 area[malloc_usable_size( area ) - 1] != '\0' ||
+				 area[malloc_size( area ) - 1] != '\0' ||
 				 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage2" );
 		} // for
@@ -244,16 +232,17 @@
 		size_t s = i + default_mmap_start();			// cross over point
 		char * area = (char *)calloc( 1, s );
-		if ( area == 0p ) abort( "calloc/realloc/free out of memory" );
+// 		if ( area == 0p ) abort( "calloc/realloc/free out of memory" );
 		if ( area[0] != '\0' || area[s - 1] != '\0' ||
-			 area[malloc_usable_size( area ) - 1] != '\0' ||
-			 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage1" );
+			 area[malloc_size( area ) - 1] != '\0' ||
+			 ! malloc_zero_fill( area ) ) //abort( "calloc/realloc/free corrupt storage3" );
+			printf( "C %zd %d %d %d %d\n", s, area[0] != '\0', area[s - 1] != '\0', area[malloc_size( area ) - 1] != '\0', ! malloc_zero_fill( area ) );
 
 		// Do not start this loop index at 0 because realloc of 0 bytes frees the storage.
 		for ( r; i ~ 256 * 1024 ~ 26 ) {				// start at initial memory request
 			area = (char *)realloc( area, r );			// attempt to reuse storage
-			if ( area == 0p ) abort( "calloc/realloc/free out of memory" );
+// 			if ( area == 0p ) abort( "calloc/realloc/free out of memory" );
 			if ( area[0] != '\0' || area[r - 1] != '\0' ||
-				 area[malloc_usable_size( area ) - 1] != '\0' ||
-				 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage2" );
+				 area[malloc_size( area ) - 1] != '\0' ||
+				 ! malloc_zero_fill( area ) ) abort( "calloc/realloc/free corrupt storage4" );
 		} // for
 		free( area );
@@ -266,5 +255,5 @@
 		// initial N byte allocation
 		char * area = (char *)memalign( a, amount );	// aligned N-byte allocation
-		if ( area == 0p ) abort( "memalign/realloc/free out of memory" ); // no storage ?
+// 		if ( area == 0p ) abort( "memalign/realloc/free out of memory" ); // no storage ?
 		//sout | alignments[a] | area;
 		if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
@@ -277,5 +266,4 @@
 			if ( area[0] != '\345' || area[s - 2] != '\345' ) abort( "memalign/realloc/free corrupt storage" );
 			area = (char *)realloc( area, s );			// attempt to reuse storage
-			if ( area == 0p ) abort( "memalign/realloc/free out of memory" ); // no storage ?
 			//sout | i | area;
 			if ( (size_t)area % a != 0 ) {				// check for initial alignment
@@ -293,5 +281,4 @@
 		for ( s; 1 ~ limit ) {							// allocation of size 0 can return null
 			char * area = (char *)cmemalign( a, 1, s );
-			if ( area == 0p ) abort( "cmemalign/free out of memory" );
 			//sout | i | area;
 			if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
@@ -299,5 +286,5 @@
 			} // if
 			if ( area[0] != '\0' || area[s - 1] != '\0' ||
-				 area[malloc_usable_size( area ) - 1] != '\0' ||
+				 area[malloc_size( area ) - 1] != '\0' ||
 				 ! malloc_zero_fill( area ) ) abort( "cmemalign/free corrupt storage" );
 			area[0] = '\345'; area[s - 1] = '\345';		// fill first/last byte
@@ -312,5 +299,4 @@
 		// initial N byte allocation
 		char * area = (char *)cmemalign( a, 1, amount ); // aligned N-byte allocation
-		if ( area == 0p ) abort( "cmemalign/realloc/free out of memory" ); // no storage ?
 		//sout | alignments[a] | area;
 		if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
@@ -318,5 +304,5 @@
 		} // if
 		if ( area[0] != '\0' || area[amount - 1] != '\0' ||
-			 area[malloc_usable_size( area ) - 1] != '\0' ||
+			 area[malloc_size( area ) - 1] != '\0' ||
 			 ! malloc_zero_fill( area ) ) abort( "cmemalign/realloc/free corrupt storage1" );
 		area[0] = '\345'; area[amount - 2] = '\345';	// fill first/penultimate byte
@@ -326,11 +312,10 @@
 			if ( area[0] != '\345' || area[s - 2] != '\345' ) abort( "cmemalign/realloc/free corrupt storage2" );
 			area = (char *)realloc( area, s );			// attempt to reuse storage
-			if ( area == 0p ) abort( "cmemalign/realloc/free out of memory" ); // no storage ?
 			//sout | i | area;
 			if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
 				abort( "cmemalign/realloc/free bad alignment %p", area );
 			} // if
-			if ( area[s - 1] != '\0' || area[s - 1] != '\0' ||
-				 area[malloc_usable_size( area ) - 1] != '\0' ||
+			if ( area[0] != '\345' || area[s - 1] != '\0' ||
+				 area[malloc_size( area ) - 1] != '\0' ||
 				 ! malloc_zero_fill( area ) ) abort( "cmemalign/realloc/free corrupt storage3" );
 			area[s - 1] = '\345';						// fill last byte
@@ -345,5 +330,4 @@
 		// initial N byte allocation
 		char * area = (char *)memalign( a, amount );	// aligned N-byte allocation
-		if ( area == 0p ) abort( "memalign/realloc with align/free out of memory" ); // no storage ?
 		//sout | alignments[a] | area | endl;
 		if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
@@ -356,5 +340,4 @@
 			if ( area[0] != '\345' || area[s - 2] != '\345' ) abort( "memalign/realloc/free corrupt storage" );
 			area = (char *)realloc( area, a * 2, s );	// attempt to reuse storage
-			if ( area == 0p ) abort( "memalign/realloc with align/free out of memory" ); // no storage ?
 			//sout | i | area | endl;
 			if ( (size_t)area % a * 2 != 0 ) {			// check for initial alignment
@@ -372,5 +355,4 @@
 		// initial N byte allocation
 		char *area = (char *)cmemalign( a, 1, amount );	// aligned N-byte allocation
-		if ( area == 0p ) abort( "cmemalign/realloc with align/free out of memory" ); // no storage ?
 		//sout | alignments[a] | area | endl;
 		if ( (size_t)area % a != 0 || malloc_alignment( area ) != a ) { // check for initial alignment
@@ -378,5 +360,5 @@
 		} // if
 		if ( area[0] != '\0' || area[amount - 1] != '\0' ||
-			 area[malloc_usable_size( area ) - 1] != '\0' ||
+			 area[malloc_size( area ) - 1] != '\0' ||
 			 ! malloc_zero_fill( area ) ) abort( "cmemalign/realloc with align/free corrupt storage1" );
 		area[0] = '\345'; area[amount - 2] = '\345';	// fill first/penultimate byte
@@ -386,5 +368,4 @@
 			if ( area[0] != '\345' || area[s - 2] != '\345' ) abort( "cmemalign/realloc with align/free corrupt storage2" );
 			area = (char *)realloc( area, a * 2, s );	// attempt to reuse storage
-			if ( area == 0p ) abort( "cmemalign/realloc with align/free out of memory" ); // no storage ?
 			//sout | i | area | endl;
 			if ( (size_t)area % a * 2 != 0 || malloc_alignment( area ) != a * 2 ) { // check for initial alignment
@@ -392,5 +373,5 @@
 			} // if
 			if ( area[s - 1] != '\0' || area[s - 1] != '\0' ||
-				 area[malloc_usable_size( area ) - 1] != '\0' ||
+				 area[malloc_size( area ) - 1] != '\0' ||
 				 ! malloc_zero_fill( area ) ) abort( "cmemalign/realloc/free corrupt storage3" );
 			area[s - 1] = '\345';						// fill last byte
