|
@@ -596,6 +596,9 @@ ulong mem_malloc_start = 0;
|
|
|
ulong mem_malloc_end = 0;
|
|
|
ulong mem_malloc_brk = 0;
|
|
|
|
|
|
+static bool malloc_testing; /* enable test mode */
|
|
|
+static int malloc_max_allocs; /* return NULL after this many calls to malloc() */
|
|
|
+
|
|
|
void *sbrk(ptrdiff_t increment)
|
|
|
{
|
|
|
ulong old = mem_malloc_brk;
|
|
@@ -1307,6 +1310,11 @@ Void_t* mALLOc(bytes) size_t bytes;
|
|
|
return malloc_simple(bytes);
|
|
|
#endif
|
|
|
|
|
|
+ if (CONFIG_IS_ENABLED(UNIT_TEST) && malloc_testing) {
|
|
|
+ if (--malloc_max_allocs < 0)
|
|
|
+ return NULL;
|
|
|
+ }
|
|
|
+
|
|
|
/* check if mem_malloc_init() was run */
|
|
|
if ((mem_malloc_start == 0) && (mem_malloc_end == 0)) {
|
|
|
/* not initialized yet */
|
|
@@ -2470,6 +2478,17 @@ int initf_malloc(void)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
+void malloc_enable_testing(int max_allocs)
|
|
|
+{
|
|
|
+ malloc_testing = true;
|
|
|
+ malloc_max_allocs = max_allocs;
|
|
|
+}
|
|
|
+
|
|
|
+void malloc_disable_testing(void)
|
|
|
+{
|
|
|
+ malloc_testing = false;
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
|
|
|
History:
|