https://gcc.gnu.org/g:6d21ca6413c531436e0513ca733fe308e316f71b

commit r16-4609-g6d21ca6413c531436e0513ca733fe308e316f71b
Author: Mivirl <[email protected]>
Date:   Fri Oct 24 17:43:02 2025 +0200

    Ada: Fix argument expansion with unbalanced quote on Windows
    
    The last character of the argument is chopped as if it was a quote.
    
    gcc/ada/
            PR ada/122367
            * rtinit.c (__gnat_runtime_initialize) [__MINGW32__]: Fix detection
            of quoted arguments.

Diff:
---
 gcc/ada/rtinit.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/gcc/ada/rtinit.c b/gcc/ada/rtinit.c
index 6a135529870b..598550c4051c 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