diff options
| author | Daniel Stenberg <daniel@haxx.se> | 2001-08-05 12:34:07 +0000 | 
|---|---|---|
| committer | Daniel Stenberg <daniel@haxx.se> | 2001-08-05 12:34:07 +0000 | 
| commit | 2827f5327aad6a0341b4ed3231e414ff9a980101 (patch) | |
| tree | b3ba9bb11066ea05cb74436ebb8565edcb151b57 /lib | |
| parent | 47bb09e9089e375bfded0c4a417271a6441eccdd (diff) | |
curl_escape() no longer attempts to detect already encoded stuff (in order
not to re-encode it).
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/escape.c | 27 | 
1 files changed, 7 insertions, 20 deletions
| diff --git a/lib/escape.c b/lib/escape.c index 140bd655e..b5d35255d 100644 --- a/lib/escape.c +++ b/lib/escape.c @@ -54,28 +54,15 @@ char *curl_escape(char *string, int length)              !(in >= 'A' && in <= 'Z') &&              !(in >= '0' && in <= '9')) {        /* encode it */ -      if(('%' == in) && -         (length>=2) && -         isxdigit((int)string[1]) && -         isxdigit((int)string[2]) ) { -        /* -         * This is an already encoded letter, leave it! -         */ -        memcpy(&ns[index], string, 3); -        string+=2; +      newlen += 2; /* the size grows with two, since this'll become a %XX */ +      if(newlen > alloc) { +        alloc *= 2; +        ns = realloc(ns, alloc); +        if(!ns) +          return NULL;        } -      else { -        /* encode this now */ +      sprintf(&ns[index], "%%%02X", in); -        newlen += 2; /* the size grows with two, since this'll become a %XX */ -        if(newlen > alloc) { -          alloc *= 2; -          ns = realloc(ns, alloc); -          if(!ns) -            return NULL; -        } -        sprintf(&ns[index], "%%%02X", in); -      }        index+=3;      }      else { | 
