scmirroring_retvm_if(scmirroring_sink == NULL, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink is NULL");
- scmirroring_sink_s *mhandle = (scmirroring_sink_s *)scmirroring_sink;
- scmirroring_retvm_if(mhandle->magic_num == SCMIRRORING_MAGIC_NUMBER, SCMIRRORING_ERROR_INVALID_PARAMETER, "scmirroring_sink is created already");
+ scmirroring_sink_s *mhandle = (scmirroring_sink_s *)(*scmirroring_sink);
+ if (mhandle != NULL && mhandle->magic_num == SCMIRRORING_MAGIC_NUMBER) {
+ scmirroring_error("Already created handle");
+ return SCMIRRORING_ERROR_INVALID_PARAMETER;
+ }
scmirroring_sink_s *handle = (scmirroring_sink_s *)calloc(1, sizeof(scmirroring_sink_s));
scmirroring_retvm_if(handle == NULL, SCMIRRORING_ERROR_OUT_OF_MEMORY, "Fail to allocate memory for handle");