From 79e78cd88d302d04450997e223293d739a24cd23 Mon Sep 17 00:00:00 2001 From: Aleksey Kliger Date: Fri, 20 Sep 2024 11:03:44 -0400 Subject: [PATCH] [aot] mono_aot_split_options: reset state after a backslash Fixes https://github.com/dotnet/runtime/issues/108066 --- src/mono/mono/mini/aot-compiler.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mono/mono/mini/aot-compiler.c b/src/mono/mono/mini/aot-compiler.c index 139dcfbbdd5b42..df45813a2e30d0 100644 --- a/src/mono/mono/mini/aot-compiler.c +++ b/src/mono/mono/mini/aot-compiler.c @@ -8746,8 +8746,14 @@ mono_aot_split_options (const char *aot_options) g_return_val_if_fail (aot_options != NULL, NULL); while ((cur = *aot_options) != '\0') { - if (state == MONO_AOT_OPTION_STATE_ESCAPE) + if (state == MONO_AOT_OPTION_STATE_ESCAPE) { + // After the escaped character, we're back inside quotes + // + // Note: we don't seem to remove the "" or the \ from the option here. + // Perhaps the caller is expected to take care of it? + state = MONO_AOT_OPTION_STATE_STRING; goto next; + } switch (cur) { case '"':