Ugly, but logically it looks right:

diff -u apr_cpystrn.c.bak apr_cpystrn.c
--- apr_cpystrn.c.bak   Fri Apr  5 14:17:32 2002
+++ apr_cpystrn.c       Fri Apr  5 14:31:31 2002
@@ -171,9 +171,11 @@
     while (*ct != '\0') {
         CHECK_QUOTATION(ct, isquoted);
         DETERMINE_NEXTSTRING(ct, isquoted);
-        ct++;
         numargs++;
-        SKIP_WHITESPACE(ct);
+        if (*ct != '\0') {
+            ct++;
+            SKIP_WHITESPACE(ct);
+        }
     }
     *argv_out = apr_palloc(token_context, numargs * sizeof(char*));
 
@@ -183,11 +185,16 @@
         CHECK_QUOTATION(cp, isquoted);
         ct = cp;
         DETERMINE_NEXTSTRING(cp, isquoted);
-        cp++;
-        (*argv_out)[numargs] = apr_palloc(token_context, cp - ct);
-        apr_cpystrn((*argv_out)[numargs], ct, cp - ct);
         numargs++;
-        SKIP_WHITESPACE(cp);
+        if (*cp != '\0') {
+            cp++;
+            (*argv_out)[numargs] = apr_palloc(token_context, cp - ct);
+            apr_cpystrn((*argv_out)[numargs], ct, cp - ct);
+            SKIP_WHITESPACE(cp);
+        } else {
+            (*argv_out)[numargs] = apr_palloc(token_context, cp - ct + 1);
+            apr_cpystrn((*argv_out)[numargs], ct, cp - ct + 1);
+        }
     }
     (*argv_out)[numargs] = NULL;
 

-- 
===========================================================================
   Jim Jagielski   [|]   [EMAIL PROTECTED]   [|]   http://www.jaguNET.com/
      "A society that will trade a little liberty for a little order
             will lose both and deserve neither" - T.Jefferson

Reply via email to