diff --git a/interfaces/kits/js/src/mod_fs/properties/ani/connectdfs_ani.cpp b/interfaces/kits/js/src/mod_fs/properties/ani/connectdfs_ani.cpp index da3f63b52fc23add8144ca97b4d47a55d0efa873..416a6808e88dcca5962e2bab0a6b46bb000f6633 100644 --- a/interfaces/kits/js/src/mod_fs/properties/ani/connectdfs_ani.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/ani/connectdfs_ani.cpp @@ -35,7 +35,13 @@ void ConnectDfsAni::ConnectDfsSync(ani_env *env, [[maybe_unused]] ani_class claz ErrorHandler::Throw(env, E_PARAMS); return; } + sptr anidfslistener_(new(std::nothrow) ANIDfsListener()); + if (!anidfslistener_) { + HILOGE("failed to new ANIDfsListener"); + ErrorHandler::Throw(env, E_NOMEM); + return; + } anidfslistener_->SetConnectDfsEnv(env); ani_ref promiseDeferred = nullptr; diff --git a/interfaces/kits/js/src/mod_fs/properties/dup.cpp b/interfaces/kits/js/src/mod_fs/properties/dup.cpp index 77d71f7384a35fdd90da992eb92e5b4d5c824225..de2de57d37c2a1b8361bd4d21fd72a67690f3936 100644 --- a/interfaces/kits/js/src/mod_fs/properties/dup.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/dup.cpp @@ -51,6 +51,7 @@ napi_value Dup::Sync(napi_env env, napi_callback_info info) new (std::nothrow) uv_fs_t, CommonFunc::fs_req_cleanup }; if (!readlink_req) { HILOGE("Failed to request heap memory."); + close(dstFd); NError(ENOMEM).ThrowErr(env); return nullptr; } @@ -58,6 +59,7 @@ napi_value Dup::Sync(napi_env env, napi_callback_info info) int ret = uv_fs_readlink(nullptr, readlink_req.get(), path.c_str(), nullptr); if (ret < 0) { HILOGE("Failed to readlink fd, ret: %{public}d", ret); + close(dstFd); NError(ret).ThrowErr(env); return nullptr; } diff --git a/interfaces/kits/js/src/mod_fs/properties/dup_core.cpp b/interfaces/kits/js/src/mod_fs/properties/dup_core.cpp index 7162051499842faad86ee99d5b1a9f176ca5756b..17d099d130b07f1edfefb04f1ee75d9a95bc2f94 100644 --- a/interfaces/kits/js/src/mod_fs/properties/dup_core.cpp +++ b/interfaces/kits/js/src/mod_fs/properties/dup_core.cpp @@ -52,12 +52,14 @@ FsResult DupCore::DoDup(const int32_t &fd) new (std::nothrow) uv_fs_t, FsUtils::FsReqCleanup }; if (!readLinkReq) { HILOGE("Failed to request heap memory."); + close(dstFd); return FsResult::Error(ENOMEM); } string path = "/proc/self/fd/" + to_string(dstFd); int ret = uv_fs_readlink(nullptr, readLinkReq.get(), path.c_str(), nullptr); if (ret < 0) { HILOGE("Failed to readlink fd, ret: %{public}d", ret); + close(dstFd); return FsResult::Error(ret); } return FileInstantiator::InstantiateFile(dstFd, string(static_cast(readLinkReq->ptr)), false);