The last character of the argument is chopped as if it was a quote.

Tested on x86-64/Windows, applied on the mainline.


2025-10-24  Mivirl  <[email protected]>

        PR ada/122367
        * rtinit.c (__gnat_runtime_initialize) [__MINGW32__]: Fix detection
        of quoted arguments.

-- 
Eric Botcazou
diff --git a/gcc/ada/rtinit.c b/gcc/ada/rtinit.c
index 6a135529870..598550c4051 100644
--- a/gcc/ada/rtinit.c
+++ b/gcc/ada/rtinit.c
@@ -419,6 +419,7 @@ __gnat_runtime_initialize (int install_handler)
      int last;
      int argc_expanded = 0;
      TCHAR result [MAX_PATH];
+     int arglen;
      int quoted;
 
      __gnat_get_argw (GetCommandLineW (), &wargv, &wargc);
@@ -436,7 +437,10 @@ __gnat_runtime_initialize (int install_handler)
 
 	 for (k=1; k<wargc; k++)
 	   {
-	     quoted = (wargv[k][0] == _T('\''));
+	     arglen = _tcslen (wargv[k]);
+	     quoted = wargv[k][0] == _T('\'')
+		      && arglen > 1
+		      && wargv[k][arglen - 1] == _T('\'');
 
 	     /* Check for wildcard expansion if the argument is not quoted. */
 	     if (!quoted && __gnat_do_argv_expansion

Reply via email to