in src/umockcall.c [26:73]
UMOCKCALL_HANDLE umockcall_create(const char* function_name, void* umockcall_data, UMOCKCALL_DATA_COPY_FUNC umockcall_data_copy, UMOCKCALL_DATA_FREE_FUNC umockcall_data_free, UMOCKCALL_DATA_STRINGIFY_FUNC umockcall_data_stringify, UMOCKCALL_DATA_ARE_EQUAL_FUNC umockcall_data_are_equal)
{
UMOCKCALL* result;
if ((function_name == NULL) ||
(umockcall_data == NULL) ||
(umockcall_data_copy == NULL) ||
(umockcall_data_free == NULL) ||
(umockcall_data_stringify == NULL) ||
(umockcall_data_are_equal == NULL))
{
/* Codes_SRS_UMOCKCALL_01_003: [ If any of the arguments are NULL, umockcall_create shall fail and return NULL. ] */
UMOCK_LOG("umockcall: Cannot create call, invalid arguments: function_name = %p, umockcall_data = %p, umockcall_data_free = %p, umockcall_data_stringify = %p, umockcall_data_are_equal = %p.",
function_name, umockcall_data, umockcall_data_free, umockcall_data_stringify, umockcall_data_are_equal);
result = NULL;
}
else
{
/* Codes_SRS_UMOCKCALL_01_001: [ umockcall_create shall create a new instance of a umock call and on success it shall return a non-NULL handle to it. ] */
result = (UMOCKCALL*)umockalloc_malloc(sizeof(UMOCKCALL));
/* Codes_SRS_UMOCKCALL_01_002: [ If allocating memory for the umock call instance fails, umockcall_create shall return NULL. ] */
if (result != NULL)
{
size_t function_name_length = strlen(function_name);
result->function_name = (char*)umockalloc_malloc(function_name_length + 1);
if (result->function_name == NULL)
{
/* Codes_SRS_UMOCKCALL_01_002: [ If allocating memory for the umock call instance fails, umockcall_create shall return NULL. ] */
UMOCK_LOG("umockcall: Cannot allocate memory for the call function name.");
umockalloc_free(result);
result = NULL;
}
else
{
(void)memcpy(result->function_name, function_name, function_name_length + 1);
result->umockcall_data = umockcall_data;
result->umockcall_data_copy = umockcall_data_copy;
result->umockcall_data_free = umockcall_data_free;
result->umockcall_data_stringify = umockcall_data_stringify;
result->umockcall_data_are_equal = umockcall_data_are_equal;
result->fail_call = 0;
result->ignore_all_calls = 0;
}
}
}
return result;
}