Windows process: escape backslashes before quotes

This commit is contained in:
Semphris
2024-09-13 22:23:49 -04:00
committed by Sam Lantinga
parent 90e01040c5
commit 3cf54675bb
2 changed files with 13 additions and 0 deletions

View File

@@ -95,6 +95,10 @@ static bool join_arguments(const char * const *args, char **args_out)
case '"':
len += 2;
break;
case '\\':
/* only escape backslashes that precede a double quote */
len += (*(a + 1) == '"' || *(a + 1) == '\0') ? 2 : 1;
break;
default:
len += 1;
break;
@@ -121,6 +125,12 @@ static bool join_arguments(const char * const *args, char **args_out)
result[i_out++] = '\\';
result[i_out++] = *a;
break;
case '\\':
result[i_out++] = *a;
if (*(a + 1) == '"' || *(a + 1) == '\0') {
result[i_out++] = *a;
}
break;
default:
result[i_out++] = *a;
break;