diff --git a/projects/clr/hipamd/src/hip_code_object.hpp b/projects/clr/hipamd/src/hip_code_object.hpp index d0148cb8a9..c83ec37b24 100644 --- a/projects/clr/hipamd/src/hip_code_object.hpp +++ b/projects/clr/hipamd/src/hip_code_object.hpp @@ -96,8 +96,12 @@ public: hipError_t getManagedVarPointer(std::string name, void** pointer, size_t* size_ptr) const { auto it = vars_.find(name); if (it != vars_.end() && it->second->getVarKind() == Var::DVK_Managed) { - *pointer = it->second->getManagedVarPtr(); - *size_ptr = it->second->getSize(); + if (pointer != nullptr) { + *pointer = it->second->getManagedVarPtr(); + } + if (size_ptr != nullptr) { + *size_ptr = it->second->getSize(); + } } return hipSuccess; } diff --git a/projects/clr/hipamd/src/hip_module.cpp b/projects/clr/hipamd/src/hip_module.cpp index dfb082dca7..1d96c6a88d 100644 --- a/projects/clr/hipamd/src/hip_module.cpp +++ b/projects/clr/hipamd/src/hip_module.cpp @@ -92,10 +92,6 @@ hipError_t hipModuleGetGlobal(hipDeviceptr_t* dptr, size_t* bytes, hipModule_t h const char* name) { HIP_INIT_API(hipModuleGetGlobal, dptr, bytes, hmod, name); - if (dptr == nullptr || bytes == nullptr) { - // If either is nullptr, ignore it - HIP_RETURN(hipSuccess); - } if ((dptr == nullptr && bytes == nullptr) || name == nullptr || strlen(name) == 0) { HIP_RETURN(hipErrorInvalidValue); } diff --git a/projects/clr/hipamd/src/hip_platform.cpp b/projects/clr/hipamd/src/hip_platform.cpp index 1d5e61dba3..ef64c0882b 100644 --- a/projects/clr/hipamd/src/hip_platform.cpp +++ b/projects/clr/hipamd/src/hip_platform.cpp @@ -788,7 +788,7 @@ hipError_t PlatformState::getDynGlobalVar(const char* hostVar, hipModule_t hmod, hipDeviceptr_t* dev_ptr, size_t* size_ptr) { amd::ScopedLock lock(lock_); - if (hostVar == nullptr || dev_ptr == nullptr || size_ptr == nullptr) { + if (hostVar == nullptr) { return hipErrorInvalidValue; } @@ -797,14 +797,20 @@ hipError_t PlatformState::getDynGlobalVar(const char* hostVar, hipModule_t hmod, LogPrintfError("Cannot find the module: 0x%x", hmod); return hipErrorNotFound; } - *dev_ptr = nullptr; + if (dev_ptr) { + *dev_ptr = nullptr; + } IHIP_RETURN_ONFAIL(it->second->getManagedVarPointer(hostVar, dev_ptr, size_ptr)); // if dev_ptr is nullptr, hostvar is not in managed variable list - if (*dev_ptr == nullptr) { + if ((dev_ptr && *dev_ptr == nullptr) || (size_ptr && *size_ptr == 0)) { hip::DeviceVar* dvar = nullptr; IHIP_RETURN_ONFAIL(it->second->getDeviceVar(&dvar, hostVar)); - *dev_ptr = dvar->device_ptr(); - *size_ptr = dvar->size(); + if (dev_ptr != nullptr) { + *dev_ptr = dvar->device_ptr(); + } + if (size_ptr != nullptr) { + *size_ptr = dvar->size(); + } } return hipSuccess; }