mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-24 21:18:24 +08:00
Add wrapper for snprintf
Signed-off-by: Fabian Zwolinski <fabian.zwolinski@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
b9132ef5f5
commit
617f65c285
@@ -8,6 +8,7 @@
|
||||
#pragma once
|
||||
#include "shared/source/debug_settings/debug_settings_manager.h"
|
||||
#include "shared/source/helpers/common_types.h"
|
||||
#include "shared/source/helpers/string.h"
|
||||
#include "shared/source/helpers/vec.h"
|
||||
#include "shared/source/unified_memory/unified_memory.h"
|
||||
|
||||
@@ -135,7 +136,7 @@ class Context : public BaseObject<_cl_context> {
|
||||
DEBUG_BREAK_IF(contextCallback == nullptr);
|
||||
DEBUG_BREAK_IF(driverDiagnostics == nullptr);
|
||||
char hint[DriverDiagnostics::maxHintStringSize];
|
||||
snprintf(hint, DriverDiagnostics::maxHintStringSize, DriverDiagnostics::hintFormat[performanceHint], std::forward<Args>(args)..., 0);
|
||||
snprintf_s(hint, DriverDiagnostics::maxHintStringSize, DriverDiagnostics::maxHintStringSize, DriverDiagnostics::hintFormat[performanceHint], std::forward<Args>(args)..., 0);
|
||||
if (driverDiagnostics->validFlags(flags)) {
|
||||
if (contextCallback) {
|
||||
contextCallback(hint, &flags, sizeof(flags), userData);
|
||||
|
||||
@@ -92,6 +92,28 @@ inline int memmove_s(void *dst, size_t numberOfElements, const void *src, size_t
|
||||
return 0;
|
||||
}
|
||||
|
||||
template <typename... Args>
|
||||
inline int snprintf_s(char *buffer, size_t sizeOfBuffer, size_t count, const char *format, Args &&...args) {
|
||||
if ((buffer == nullptr) || (format == nullptr)) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return snprintf(buffer, sizeOfBuffer, format, std::forward<Args>(args)...);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(_WIN32)
|
||||
|
||||
template <typename... Args>
|
||||
inline int snprintf_s(char *buffer, size_t sizeOfBuffer, size_t count, const char *format, Args &&...args) {
|
||||
if ((buffer == nullptr) || (format == nullptr)) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
return _snprintf_s(buffer, sizeOfBuffer, count, format, std::forward<Args>(args)...);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
template <typename T = char>
|
||||
|
||||
@@ -148,3 +148,21 @@ TEST(StringHelpers, GivenParamsWhenUsingMemcpyThenReturnIsCorrect) {
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
TEST(StringHelpers, GivenParamsWhenUsingSnprintfsThenReturnIsCorrect) {
|
||||
char buffer[15] = "";
|
||||
const char *fmtStr = "World!";
|
||||
|
||||
int retVal1 = snprintf_s(buffer, sizeof(buffer), sizeof(buffer), "Hello %s", fmtStr);
|
||||
ASSERT_EQ(12, retVal1);
|
||||
ASSERT_EQ(0, std::strcmp("Hello World!", buffer));
|
||||
|
||||
int retVal2 = snprintf_s(nullptr, sizeof(buffer), sizeof(buffer), "Hello %s", fmtStr);
|
||||
ASSERT_EQ(-EINVAL, retVal2);
|
||||
|
||||
int retVal3 = snprintf_s(buffer, sizeof(buffer), sizeof(buffer), nullptr, fmtStr);
|
||||
ASSERT_EQ(-EINVAL, retVal3);
|
||||
|
||||
int retVal4 = snprintf_s(nullptr, sizeof(buffer), sizeof(buffer), nullptr, fmtStr);
|
||||
ASSERT_EQ(-EINVAL, retVal4);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user