Index: libcfa/src/heap.cfa
===================================================================
--- libcfa/src/heap.cfa	(revision ad2dced5ee5fca6b3946b3448926eee5730dda59)
+++ libcfa/src/heap.cfa	(revision 2b4daf23cdfb724c24a5ed13d7d20d9fe2c80590)
@@ -10,6 +10,6 @@
 // Created On       : Tue Dec 19 21:58:35 2017
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Tue Dec 15 21:37:54 2020
-// Update Count     : 1013
+// Last Modified On : Wed Dec 16 12:28:25 2020
+// Update Count     : 1023
 //
 
@@ -438,5 +438,5 @@
 	header = headerAddr( addr );
 
-  if ( unlikely( heapEnd < addr ) ) {					// mmapped ?
+  if ( unlikely( addr < heapBegin || heapEnd < addr ) ) { // mmapped ?
 		fakeHeader( header, alignment );
 		size = header->kind.real.blockSize & -3;		// mmap size
@@ -445,5 +445,5 @@
 
 	#ifdef __CFA_DEBUG__
-	checkHeader( addr < heapBegin, name, addr );		// bad low address ?
+	checkHeader( header < (HeapManager.Storage.Header *)heapBegin, name, addr ); // bad low address ?
 	#endif // __CFA_DEBUG__
 
@@ -484,7 +484,7 @@
 #endif // __CFA_DEBUG__
 
+
 #define NO_MEMORY_MSG "insufficient heap memory available for allocating %zd new bytes."
 
-#include <unistd.h>
 static inline void * extend( size_t size ) with( heapManager ) {
 	lock( extlock __cfaabi_dbg_ctx2 );
@@ -511,5 +511,5 @@
 		#ifdef __CFA_DEBUG__
 		// Set new memory to garbage so subsequent uninitialized usages might fail.
-		memset( (char *)heapEnd + heapRemaining, '\hde', increase );
+		memset( (char *)heapEnd + heapRemaining, '\xde', increase );
 		//Memset( (char *)heapEnd + heapRemaining, increase );
 		#endif // __CFA_DEBUG__
@@ -586,5 +586,5 @@
 		#ifdef __CFA_DEBUG__
 		// Set new memory to garbage so subsequent uninitialized usages might fail.
-		memset( block, '\hde', tsize );
+		memset( block, '\xde', tsize );
 		//Memset( block, tsize );
 		#endif // __CFA_DEBUG__
@@ -634,5 +634,5 @@
 		#ifdef __CFA_DEBUG__
 		// Set free memory to garbage so subsequent usages might fail.
-		memset( ((HeapManager.Storage *)header)->data, '\hde', freeElem->blockSize - sizeof( HeapManager.Storage ) );
+		memset( ((HeapManager.Storage *)header)->data, '\xde', freeElem->blockSize - sizeof( HeapManager.Storage ) );
 		//Memset( ((HeapManager.Storage *)header)->data, freeElem->blockSize - sizeof( HeapManager.Storage ) );
 		#endif // __CFA_DEBUG__
@@ -1029,4 +1029,5 @@
 	} // cmemalign
 
+
 	// Same as memalign(), but ISO/IEC 2011 C11 Section 7.22.2 states: the value of size shall be an integral multiple
     // of alignment. This requirement is universally ignored.
@@ -1045,4 +1046,5 @@
 		return 0;
 	} // posix_memalign
+
 
 	// Allocates size bytes and returns a pointer to the allocated memory. The memory address shall be a multiple of the
