}
IMAGE_UTIL_SAFE_FREE(image_header);
+ IMAGE_UTIL_SAFE_G_FREE(_handle->path);
_handle->path = g_strndup(path, strlen(path));
image_util_retvm_if(_handle->path == NULL, IMAGE_UTIL_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
+ IMAGE_UTIL_SAFE_FREE(_handle->src_buffer);
+
return err;
}
image_util_retvm_if(_handle == NULL, IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid Handle");
image_util_retvm_if((src_buffer == NULL || src_size < IMG_HEADER_LENGTH), IMAGE_UTIL_ERROR_INVALID_PARAMETER, "Invalid input buffer");
- IMAGE_UTIL_SAFE_FREE(_handle->path);
-
err = _image_util_decode_check_image_type(src_buffer, &_handle->image_type);
image_util_retvm_if(err != IMAGE_UTIL_ERROR_NONE, err, "_image_util_decode_check_image_type failed");
- _handle->src_buffer = (void *)src_buffer;
+ IMAGE_UTIL_SAFE_FREE(_handle->src_buffer);
+
+ _handle->src_buffer = calloc(1, src_size);
+ image_util_retvm_if(!_handle->src_buffer, IMAGE_UTIL_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
+
+ memcpy(_handle->src_buffer, src_buffer, src_size);
_handle->src_size = src_size;
+ IMAGE_UTIL_SAFE_G_FREE(_handle->path);
+
return err;
}
return IMAGE_UTIL_ERROR_NONE;
}
-static int __image_util_decode_internal(decode_s * _handle, mm_util_image_h *image_info)
+static int __image_util_decode_internal(decode_s *_handle, mm_util_image_h *image_info)
{
int err = MM_UTIL_ERROR_NONE;
int colorspace = 0;
mm_image_destroy_image(image_info);
IMAGE_UTIL_SAFE_FREE(_handle->decode2_cb);
IMAGE_UTIL_SAFE_G_FREE(_handle->path);
-
} else {
ret = __image_util_decode_internal(_handle, &image_info);
if (ret == IMAGE_UTIL_ERROR_NONE)
g_thread_join(_handle->thread);
IMAGE_UTIL_SAFE_FREE(_handle->_decode_cb);
}
- IMAGE_UTIL_SAFE_FREE(_handle->path);
+ IMAGE_UTIL_SAFE_G_FREE(_handle->path);
+ IMAGE_UTIL_SAFE_FREE(_handle->src_buffer);
IMAGE_UTIL_SAFE_FREE(_handle);
image_util_fleave();