Skip to content

Commit

Permalink
Fix snprintf not working correctly
Browse files Browse the repository at this point in the history
This seems to be an issue with Microsoft declaring a snprintf macro which causes issues.
Related issues:
- nlohmann/json#1408
- kodi-pvr/pvr.vuplus#162
  • Loading branch information
jgoyvaerts committed May 8, 2019
1 parent 8087ab0 commit 6b01d07
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 9 deletions.
13 changes: 6 additions & 7 deletions src/xenia/base/string_util.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@ namespace string_util {

inline std::string to_hex_string(uint32_t value) {
char buffer[21];
std::snprintf(buffer, sizeof(buffer), "%08" PRIX32, value);
snprintf(buffer, sizeof(buffer), "%08" PRIX32, value);
return std::string(buffer);
}

inline std::string to_hex_string(uint64_t value) {
char buffer[21];
std::snprintf(buffer, sizeof(buffer), "%016" PRIX64, value);
snprintf(buffer, sizeof(buffer), "%016" PRIX64, value);
return std::string(buffer);
}

Expand All @@ -54,8 +54,8 @@ inline std::string to_hex_string(double value) {

inline std::string to_hex_string(const vec128_t& value) {
char buffer[128];
std::snprintf(buffer, sizeof(buffer), "[%.8X, %.8X, %.8X, %.8X]",
value.u32[0], value.u32[1], value.u32[2], value.u32[3]);
snprintf(buffer, sizeof(buffer), "[%.8X, %.8X, %.8X, %.8X]", value.u32[0],
value.u32[1], value.u32[2], value.u32[3]);
return std::string(buffer);
}

Expand All @@ -66,7 +66,7 @@ inline std::string to_hex_string(const __m128& value) {
char buffer[128];
float f[4];
_mm_storeu_ps(f, value);
std::snprintf(
snprintf(
buffer, sizeof(buffer), "[%.8X, %.8X, %.8X, %.8X]",
*reinterpret_cast<uint32_t*>(&f[0]), *reinterpret_cast<uint32_t*>(&f[1]),
*reinterpret_cast<uint32_t*>(&f[2]), *reinterpret_cast<uint32_t*>(&f[3]));
Expand All @@ -77,8 +77,7 @@ inline std::string to_string(const __m128& value) {
char buffer[128];
float f[4];
_mm_storeu_ps(f, value);
std::snprintf(buffer, sizeof(buffer), "(%F, %F, %F, %F)", f[0], f[1], f[2],
f[3]);
snprintf(buffer, sizeof(buffer), "(%F, %F, %F, %F)", f[0], f[1], f[2], f[3]);
return std::string(buffer);
}

Expand Down
4 changes: 2 additions & 2 deletions src/xenia/base/vec128.h
Original file line number Diff line number Diff line change
Expand Up @@ -266,8 +266,8 @@ static inline vec128_t vec128b(uint8_t x0, uint8_t x1, uint8_t x2, uint8_t x3,

inline std::string to_string(const vec128_t& value) {
char buffer[128];
std::snprintf(buffer, sizeof(buffer), "(%g, %g, %g, %g)", value.x, value.y,
value.z, value.w);
snprintf(buffer, sizeof(buffer), "(%g, %g, %g, %g)", value.x, value.y,
value.z, value.w);
return std::string(buffer);
}

Expand Down

0 comments on commit 6b01d07

Please sign in to comment.