src/windows/bin/cmdtoargs.c

Print this page

        

@@ -126,12 +126,14 @@
             }
             if (quotes % 2 == 0) {
                 *wildcard = JNI_TRUE;
             }
             if (prev == '\\') {
+                for (i = 0 ; i < slashes ; i++) {
                 *dest++ = prev;
             }
+            }
             *dest++ = ch;
             break;
 
         default:
             if (prev == '\\') {

@@ -182,11 +184,11 @@
         src = next_arg(src, arg, &wildcard);
         // resize to accommodate another Arg
         argv = (StdArg*) JLI_MemRealloc(argv, (nargs+1) * sizeof(StdArg));
         argv[nargs].arg = JLI_StringDup(arg);
         argv[nargs].has_wildcard = wildcard;
-
+        *arg = NULL;
         nargs++;
     } while (src != NULL);
 
     stdargc = nargs;
     stdargs = argv;

@@ -600,10 +602,18 @@
     v->add("a", FALSE);
     v->add("b\\\\", FALSE);
     v->add("d", FALSE);
     vectors[i++] = v;
 
+    v= new Vector(argv[0], "\\\\?");
+    v->add("\\\\?", TRUE);
+    vectors[i++] = v;
+
+    v= new Vector(argv[0], "\\\\*");
+    v->add("\\\\*", TRUE);
+    vectors[i++] = v;
+
     dotest(vectors);
     printf("All tests pass [%d]\n", i);
     doexit(0);
 }
 #endif /* IDE_STANDALONE */