[PATCH vkd3d] vkd3d-common: Correctly escape whitespace characters in debugstr_*().

Zebediah Figura zfigura at codeweavers.com
Sat Oct 3 16:25:11 CDT 2020


Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
 libs/vkd3d-common/debug.c | 66 +++++++++++++--------------------------
 1 file changed, 21 insertions(+), 45 deletions(-)

diff --git a/libs/vkd3d-common/debug.c b/libs/vkd3d-common/debug.c
index 33deed65..5e49cf10 100644
--- a/libs/vkd3d-common/debug.c
+++ b/libs/vkd3d-common/debug.c
@@ -114,6 +114,24 @@ const char *vkd3d_dbg_sprintf(const char *fmt, ...)
     return buffer;
 }
 
+static int get_escape_char(int c)
+{
+    switch (c)
+    {
+        case '"':
+        case '\\':
+            return c;
+        case '\t':
+            return 't';
+        case '\n':
+            return 'n';
+        case '\r':
+            return 'r';
+        default:
+            return 0;
+    }
+}
+
 const char *debugstr_a(const char *str)
 {
     char *buffer, *ptr;
@@ -127,21 +145,7 @@ const char *debugstr_a(const char *str)
     *ptr++ = '"';
     while ((c = *str++) && ptr <= buffer + VKD3D_DEBUG_BUFFER_SIZE - 8)
     {
-        int escape_char;
-
-        switch (c)
-        {
-            case '"':
-            case '\\':
-            case '\n':
-            case '\r':
-            case '\t':
-                escape_char = c;
-                break;
-            default:
-                escape_char = 0;
-                break;
-        }
+        int escape_char = get_escape_char(c);
 
         if (escape_char)
         {
@@ -187,21 +191,7 @@ static const char *debugstr_w16(const uint16_t *wstr)
     *ptr++ = '"';
     while ((c = *wstr++) && ptr <= buffer + VKD3D_DEBUG_BUFFER_SIZE - 10)
     {
-        int escape_char;
-
-        switch (c)
-        {
-            case '"':
-            case '\\':
-            case '\n':
-            case '\r':
-            case '\t':
-                escape_char = c;
-                break;
-            default:
-                escape_char = 0;
-                break;
-        }
+        int escape_char = get_escape_char(c);
 
         if (escape_char)
         {
@@ -247,21 +237,7 @@ static const char *debugstr_w32(const uint32_t *wstr)
     *ptr++ = '"';
     while ((c = *wstr++) && ptr <= buffer + VKD3D_DEBUG_BUFFER_SIZE - 10)
     {
-        int escape_char;
-
-        switch (c)
-        {
-            case '"':
-            case '\\':
-            case '\n':
-            case '\r':
-            case '\t':
-                escape_char = c;
-                break;
-            default:
-                escape_char = 0;
-                break;
-        }
+        int escape_char = get_escape_char(c);
 
         if (escape_char)
         {
-- 
2.28.0




More information about the wine-devel mailing list