+
+// ------------- dummy functions to force edge cases when we can ---------------------------------------
+
+#define SYSTEM_UNDER_TEST 1 // for conditional code
+
+/*
+ These are global so they can be reset for individual tests.
+*/
+static int good_mallocs = 0; // number of initial good malocs before failurs
+static int bad_mallocs = 1; // number of failed mallocs (consecutive)
+
+static void* test_malloc( size_t n ) {
+
+ fprintf( stderr, ">>>> test malloc: %d %d\n", good_mallocs, bad_mallocs );
+ if( good_mallocs ) {
+ good_mallocs--;
+ return malloc( n );
+ }
+
+ if( bad_mallocs ) {
+ bad_mallocs--;
+ errno = ENOMEM;
+ return NULL;
+ }
+
+ return malloc( n );
+}
+
+// -----------------------------------------------------------------------------------------------------
+