stoddard    99/10/12 07:09:13

  Modified:    src/lib/apr/lib apr_cpystrn.c
  Log:
  Fix bug in ap_tokenize_to_argv.
  
  Revision  Changes    Path
  1.5       +16 -3     apache-2.0/src/lib/apr/lib/apr_cpystrn.c
  
  Index: apr_cpystrn.c
  ===================================================================
  RCS file: /home/cvs/apache-2.0/src/lib/apr/lib/apr_cpystrn.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- apr_cpystrn.c     1999/10/11 14:20:40     1.4
  +++ apr_cpystrn.c     1999/10/12 14:09:10     1.5
  @@ -136,6 +136,10 @@
           cp++; \
       }
   
  +/* DETERMINE_NEXTSTRING:
  + * At exit, cp will point to one of the following:  NULL, SPACE, TAB or 
QUOTE.
  + * NULL implies the argument string has been fully traversed.
  + */
   #define DETERMINE_NEXTSTRING(cp,isquoted) \
       for ( ; *cp != '\0'; cp++) { \
           if (   (isquoted    && (*cp     == ' ' || *cp     == '\t')) \
  @@ -175,9 +179,18 @@
           CHECK_QUOTATION(cp, isquoted);
           tmpCnt = cp;
           DETERMINE_NEXTSTRING(cp, isquoted);
  -        *cp++ = '\0';
  -        (*argv_out)[numargs] = ap_pstrdup(token_context, tmpCnt);
  -
  +        if (*cp == '\0') {
  +            (*argv_out)[numargs] = ap_pstrdup(token_context, tmpCnt);
  +            numargs++;
  +            (*argv_out)[numargs] = '\0';
  +            break;
  +        }
  +        else {
  +            *cp++ = '\0';
  +            (*argv_out)[numargs] = ap_pstrdup(token_context, tmpCnt);
  +            numargs++;
  +        }
  +        
           SKIP_WHITESPACE(cp);
       }
       *cp++ = '\0';
  
  
  

Reply via email to