diff --git a/frameworks/resmgr_lite/src/utils/string_utils.cpp b/frameworks/resmgr_lite/src/utils/string_utils.cpp index c62419a638322e00a7693b50de8be57081e5e18f..1bf6e8442ca8fb63b26ad22ed293bfc6fd6ab2f1 100644 --- a/frameworks/resmgr_lite/src/utils/string_utils.cpp +++ b/frameworks/resmgr_lite/src/utils/string_utils.cpp @@ -24,6 +24,7 @@ namespace OHOS { namespace Global { namespace Resource { +constexpr int32_t MAX_BUFFER_LEN = 1024; std::string FormatString(const char *fmt, ...) { std::string strResult; @@ -40,15 +41,14 @@ std::string FormatString(const char *fmt, va_list args) { std::string strResult; if (fmt != nullptr) { + char buf[MAX_BUFFER_LEN] = {0}; va_list tmpArgs; va_copy(tmpArgs, args); - size_t nLength = vsnprintf(nullptr, 0, fmt, tmpArgs); // compute buffer size - va_end(tmpArgs); - std::vector vBuffer(nLength + 1, '\0'); - int nWritten = vsnprintf_s(&vBuffer[0], nLength + 1, nLength, fmt, args); + int nWritten = vsnprintf_s(buf, sizeof(buf), sizeof(buf) - 1, fmt, tmpArgs); if (nWritten > 0) { - strResult = &vBuffer[0]; + strResult.append(buf, nWritten); } + va_end(tmpArgs); } return strResult; }