Jelajahi Sumber

Fixed reuse of va_list in traceVargs

It's not safe to reuse va_list over multiple var-arg calls.
Stephen Hill 9 tahun lalu
induk
melakukan
bd822fffa6
1 mengubah file dengan 4 tambahan dan 1 penghapusan
  1. 4 1
      src/bgfx.cpp

+ 4 - 1
src/bgfx.cpp

@@ -65,8 +65,11 @@ namespace bgfx
 		{
 			char temp[2048];
 			char* out = temp;
+			va_list argListCopy;
+			va_copy(argListCopy, _argList);
 			int32_t len   = bx::snprintf(out, sizeof(temp), "%s (%d): ", _filePath, _line);
-			int32_t total = len + bx::vsnprintf(out + len, sizeof(temp)-len, _format, _argList);
+			int32_t total = len + bx::vsnprintf(out + len, sizeof(temp)-len, _format, argListCopy);
+			va_end(argListCopy);
 			if ( (int32_t)sizeof(temp) < total)
 			{
 				out = (char*)alloca(total+1);