in src/umockcallrecorder.c [97:147]
UMOCKCALLRECORDER_HANDLE umockcallrecorder_create(UMOCK_C_LOCK_FACTORY_CREATE_LOCK_FUNC lock_factory_create_lock, void* lock_factory_create_lock_params)
{
UMOCKCALLRECORDER_HANDLE result;
/* Codes_SRS_UMOCKCALLRECORDER_01_095: [ lock_factory_create_lock may be NULL. ]*/
/* Codes_SRS_UMOCKCALLRECORDER_01_001: [ umockcallrecorder_create shall create a new instance of a call recorder and return a non-NULL handle to it on success. ]*/
result = umockalloc_malloc(sizeof(UMOCKCALLRECORDER));
if (result == NULL)
{
/* Codes_SRS_UMOCKCALLRECORDER_01_002: [ If any error occurs, umockcallrecorder_create shall return NULL. ]*/
UMOCK_LOG("umockalloc_malloc(%zu) failed", sizeof(UMOCKCALLRECORDER));
}
else
{
/* Codes_SRS_UMOCKCALLRECORDER_01_097: [ If lock_factory_create_lock is not NULL, umockcallrecorder_create shall call lock_factory_create_lock to create the lock used when working with the stored calls. ]*/
if (
(lock_factory_create_lock != NULL) &&
((result->lock = lock_factory_create_lock(lock_factory_create_lock_params)) == NULL)
)
{
/* Tests_SRS_UMOCKCALLRECORDER_01_002: [ If any error occurs, umockcallrecorder_create shall return NULL. ]*/
UMOCK_LOG("lock_factory_create_lock failed");
}
else
{
if (lock_factory_create_lock == NULL)
{
result->lock = NULL;
}
result->expected_call_count = 0;
result->expected_calls = NULL;
result->expected_calls_string = NULL;
result->actual_call_count = 0;
result->actual_calls = NULL;
result->actual_calls_string = NULL;
/* Codes_SRS_UMOCKCALLRECORDER_01_096: [ lock_factory_create_lock shall be saved for later use. ]*/
result->lock_factory_create_lock = lock_factory_create_lock;
result->lock_factory_create_lock_params = lock_factory_create_lock_params;
goto all_ok;
}
umockalloc_free(result);
result = NULL;
}
all_ok:
return result;
}