fix wrong realloc(TSAM_10622)
[platform/core/messaging/email-service.git] / email-core / email-core-task-manager.c
index c7ef50e..de449ae 100755 (executable)
@@ -233,17 +233,30 @@ static int emcore_register_task_handler(email_task_type_t input_task_type,
        _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: