diff --git a/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNI.cpp b/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNI.cpp index a7676a97a3bcd0..fd2ed9c3874f6e 100644 --- a/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNI.cpp +++ b/ReactAndroid/src/main/jni/first-party/yogajni/jni/YGJNI.cpp @@ -158,8 +158,9 @@ static int YGJNILogFunc(const YGConfigRef config, YGLogLevel level, const char *format, va_list args) { - char buffer[256]; - int result = vsnprintf(buffer, sizeof(buffer), format, args); + int result = vsnprintf(NULL, 0, format, args); + std::vector buffer(1 + result); + vsnprintf(buffer.data(), buffer.size(), format, args); static auto logFunc = findClassStatic("com/facebook/yoga/YogaLogger") @@ -170,10 +171,12 @@ static int YGJNILogFunc(const YGConfigRef config, if (auto obj = YGNodeJobject(node)->lockLocal()) { auto jlogger = reinterpret_cast *>(YGConfigGetContext(config)); - logFunc(jlogger->get(), - obj, - logLevelFromInt(JYogaLogLevel::javaClassStatic(), static_cast(level)), - Environment::current()->NewStringUTF(buffer)); + logFunc( + jlogger->get(), + obj, + logLevelFromInt( + JYogaLogLevel::javaClassStatic(), static_cast(level)), + Environment::current()->NewStringUTF(buffer.data())); } return result; diff --git a/ReactCommon/yoga/yoga/YGNodePrint.cpp b/ReactCommon/yoga/yoga/YGNodePrint.cpp index 0951e955a93e39..6e5047145aba45 100644 --- a/ReactCommon/yoga/yoga/YGNodePrint.cpp +++ b/ReactCommon/yoga/yoga/YGNodePrint.cpp @@ -29,15 +29,15 @@ static bool areFourValuesEqual(const std::array& four) { } static void appendFormatedString(string* str, const char* fmt, ...) { - char buffer[1024]; va_list args; va_start(args, fmt); va_list argsCopy; va_copy(argsCopy, args); + std::vector buf(1 + vsnprintf(NULL, 0, fmt, args)); va_end(args); - vsnprintf(buffer, 1024, fmt, argsCopy); + vsnprintf(buf.data(), buf.size(), fmt, argsCopy); va_end(argsCopy); - string result = string(buffer); + string result = string(buf.begin(), buf.end() - 1); str->append(result); }