diff --git a/opencl/test/unit_test/os_interface/windows/registry_reader_tests.cpp b/opencl/test/unit_test/os_interface/windows/registry_reader_tests.cpp index b0ae7a1b12..6a53e81900 100644 --- a/opencl/test/unit_test/os_interface/windows/registry_reader_tests.cpp +++ b/opencl/test/unit_test/os_interface/windows/registry_reader_tests.cpp @@ -70,6 +70,14 @@ TEST_F(RegistryReaderTest, givenRegistryReaderWhenEnvironmentIntVariableExistsTh EXPECT_EQ(1234, registryReader.getSetting(envVar, value)); } +TEST_F(RegistryReaderTest, givenRegistryReaderWhenEnvironmentInt64VariableExistsThenReturnCorrectValue) { + const char *envVar = "TestedEnvironmentInt64Variable"; + int64_t expectedValue = 9223372036854775807; + int64_t defaultValue = 0; + TestedRegistryReader registryReader(""); + EXPECT_EQ(expectedValue, registryReader.getSetting(envVar, defaultValue)); +} + struct DebugReaderWithRegistryAndEnvTest : ::testing::Test { VariableBackup openRegCountBackup{&SysCalls::regOpenKeySuccessCount}; VariableBackup queryRegCountBackup{&SysCalls::regQueryValueSuccessCount}; diff --git a/opencl/test/unit_test/os_interface/windows/registry_reader_tests.h b/opencl/test/unit_test/os_interface/windows/registry_reader_tests.h index 93452c3f52..f3fd1a124d 100644 --- a/opencl/test/unit_test/os_interface/windows/registry_reader_tests.h +++ b/opencl/test/unit_test/os_interface/windows/registry_reader_tests.h @@ -27,6 +27,8 @@ class TestedRegistryReader : public RegistryReader { return "TestedEnvironmentVariableValue"; } else if (strcmp(envVar, "TestedEnvironmentIntVariable") == 0) { return "1234"; + } else if (strcmp(envVar, "TestedEnvironmentInt64Variable") == 0) { + return "9223372036854775807"; } else if (strcmp(envVar, "settingSourceString") == 0) { return "environment"; } else if (strcmp(envVar, "settingSourceInt") == 0) { diff --git a/shared/source/os_interface/debug_env_reader.cpp b/shared/source/os_interface/debug_env_reader.cpp index 562c42207d..9b07898d17 100644 --- a/shared/source/os_interface/debug_env_reader.cpp +++ b/shared/source/os_interface/debug_env_reader.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020-2021 Intel Corporation + * Copyright (C) 2020-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -29,7 +29,7 @@ int64_t EnvironmentVariableReader::getSetting(const char *settingName, int64_t d envValue = IoFunctions::getenvPtr(settingName); if (envValue) { - value = atoi(envValue); + value = atoll(envValue); } return value; } diff --git a/shared/source/os_interface/windows/debug_registry_reader.cpp b/shared/source/os_interface/windows/debug_registry_reader.cpp index cf61ec8fd3..0c1647ddd3 100644 --- a/shared/source/os_interface/windows/debug_registry_reader.cpp +++ b/shared/source/os_interface/windows/debug_registry_reader.cpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2018-2021 Intel Corporation + * Copyright (C) 2018-2022 Intel Corporation * * SPDX-License-Identifier: MIT * @@ -82,7 +82,7 @@ int64_t RegistryReader::getSetting(const char *settingName, int64_t defaultValue if (readSettingFromEnv) { const char *envValue = getenv(settingName); if (envValue) { - value = atoi(envValue); + value = atoll(envValue); } } diff --git a/shared/test/unit_test/os_interface/linux/debug_env_reader.cpp b/shared/test/unit_test/os_interface/linux/debug_env_reader.cpp index 923fea50c4..9fc67902e5 100644 --- a/shared/test/unit_test/os_interface/linux/debug_env_reader.cpp +++ b/shared/test/unit_test/os_interface/linux/debug_env_reader.cpp @@ -65,6 +65,20 @@ TEST_F(DebugEnvReaderTests, GivenSetVariableThenSetValueIsReturned) { } } +TEST_F(DebugEnvReaderTests, givenMaxInt64AsEnvWhenGetSettingThenProperValueIsReturned) { + const char *testingVariableName = "TestingVariable"; + const char *testingVariableValue = "9223372036854775807"; + int64_t expectedValue = 9223372036854775807; + int64_t defaultValue = 0; + + VariableBackup mockGetenvCalledBackup(&IoFunctions::mockGetenvCalled, 0); + std::unordered_map mockableEnvs = {{testingVariableName, testingVariableValue}}; + VariableBackup *> mockableEnvValuesBackup(&IoFunctions::mockableEnvValues, &mockableEnvs); + + EXPECT_EQ(expectedValue, evr->getSetting(testingVariableName, defaultValue)); + EXPECT_EQ(1u, IoFunctions::mockGetenvCalled); +} + TEST_F(DebugEnvReaderTests, GivenUnsetVariableThenDefaultValueIsReturned) { int32_t ret; std::string retString;