From 6f966f30aab6f739dd65301500a6a0aff67da1d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20P=C3=B6tzschke?= <16013351+dpoetzschke@users.noreply.github.com> Date: Wed, 30 Oct 2024 11:24:50 +0100 Subject: [PATCH 1/3] fix: fix windows params bug --- src/string.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/string.cpp b/src/string.cpp index 3c7d96934..14f56e4f0 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -411,6 +411,25 @@ gb_internal String concatenate4_strings(gbAllocator a, String const &x, String c return make_string(data, len); } +#if defined(GB_SYSTEM_WINDOWS) +gb_internal String escape_char(gbAllocator a, String s, char cte) { + isize buf_len = s.len; + u8 *buf = gb_alloc_array(a, u8, buf_len); + isize i = 0; + for (isize j = 0; j < s.len; j++) { + u8 c = s.text[j]; + + if (c == cte) { + buf[i++] = '\\'; + buf[i++] = c; + } else { + buf[i++] = c; + } + } + return make_string(buf, i); +} +#endif + gb_internal String string_join_and_quote(gbAllocator a, Array strings) { if (!strings.count) { return make_string(nullptr, 0); @@ -426,7 +445,11 @@ gb_internal String string_join_and_quote(gbAllocator a, Array strings) { if (i > 0) { s = gb_string_append_fmt(s, " "); } +#if defined(GB_SYSTEM_WINDOWS) + s = gb_string_append_fmt(s, "\"%.*s\" ", LIT(escape_char(a, strings[i], '\\'))); +#else s = gb_string_append_fmt(s, "\"%.*s\" ", LIT(strings[i])); +#endif } return make_string(cast(u8 *) s, gb_string_length(s)); From d74f2154900c5d0d1335294265c65e01e44ccf51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20P=C3=B6tzschke?= <16013351+dpoetzschke@users.noreply.github.com> Date: Wed, 30 Oct 2024 22:30:56 +0100 Subject: [PATCH 2/3] adjust memory allocation --- src/string.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/string.cpp b/src/string.cpp index 14f56e4f0..ff20fb11c 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -414,7 +414,12 @@ gb_internal String concatenate4_strings(gbAllocator a, String const &x, String c #if defined(GB_SYSTEM_WINDOWS) gb_internal String escape_char(gbAllocator a, String s, char cte) { isize buf_len = s.len; - u8 *buf = gb_alloc_array(a, u8, buf_len); + isize cte_count = 0; + for (isize j = 0; j < s.len; j++) + if (s.text[j] == cte) + cte_count++; + + u8 *buf = gb_alloc_array(a, u8, buf_len+cte_count); isize i = 0; for (isize j = 0; j < s.len; j++) { u8 c = s.text[j]; From f1de4804a5d816d2a65f6e1d3d4faf7d3f340f64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20P=C3=B6tzschke?= <16013351+dpoetzschke@users.noreply.github.com> Date: Thu, 31 Oct 2024 16:18:12 +0100 Subject: [PATCH 3/3] added braces --- src/string.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/string.cpp b/src/string.cpp index ff20fb11c..c461602a7 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -415,9 +415,11 @@ gb_internal String concatenate4_strings(gbAllocator a, String const &x, String c gb_internal String escape_char(gbAllocator a, String s, char cte) { isize buf_len = s.len; isize cte_count = 0; - for (isize j = 0; j < s.len; j++) - if (s.text[j] == cte) + for (isize j = 0; j < s.len; j++) { + if (s.text[j] == cte) { cte_count++; + } + } u8 *buf = gb_alloc_array(a, u8, buf_len+cte_count); isize i = 0;