_task_handler_array_size++;
if (_task_handler_array) {
- _task_handler_array = realloc(_task_handler_array, sizeof(email_task_handler_t*) * _task_handler_array_size);
+
+ email_task_handler_t **_new_task_handler_array = NULL;
+
+ _new_task_handler_array = realloc(_task_handler_array, sizeof(email_task_handler_t*) * _task_handler_array_size);
+ if (NULL == _new_task_handler_array) {
+ EM_DEBUG_EXCEPTION("memory reallocation failed");
+ err = EMAIL_ERROR_OUT_OF_MEMORY;
+ EM_SAFE_FREE(new_task_handler);
+ EM_SAFE_FREE(_task_handler_array);
+ goto FINISH_OFF;
+ }
+
+ _task_handler_array = _new_task_handler_array;
} else {
_task_handler_array = malloc(sizeof(email_task_handler_t*) * _task_handler_array_size);
- }
- if (_task_handler_array == NULL) {
- err = EMAIL_ERROR_OUT_OF_MEMORY;
- EM_SAFE_FREE(new_task_handler);
- goto FINISH_OFF;
+ if (_task_handler_array == NULL) {
+ err = EMAIL_ERROR_OUT_OF_MEMORY;
+ EM_SAFE_FREE(new_task_handler);
+ goto FINISH_OFF;
+ }
}
+
_task_handler_array[_task_handler_array_size - 1] = new_task_handler;
FINISH_OFF: