mirror of
https://github.com/curl/curl.git
synced 2026-04-14 22:31:41 +03:00
escape: use table lookup when adding %-codes to output
On my dev host, this code runs 7.8 times faster. Closes #10377
This commit is contained in:
parent
b1e8cd52d9
commit
fc8ad0b23c
1 changed files with 6 additions and 3 deletions
|
|
@ -97,7 +97,7 @@ char *curl_easy_escape(struct Curl_easy *data, const char *string,
|
|||
return strdup("");
|
||||
|
||||
while(length--) {
|
||||
unsigned char in = *string; /* we need to treat the characters unsigned */
|
||||
unsigned char in = *string++; /* treat the characters unsigned */
|
||||
|
||||
if(Curl_isunreserved(in)) {
|
||||
/* append this */
|
||||
|
|
@ -106,10 +106,13 @@ char *curl_easy_escape(struct Curl_easy *data, const char *string,
|
|||
}
|
||||
else {
|
||||
/* encode it */
|
||||
if(Curl_dyn_addf(&d, "%%%02X", in))
|
||||
const char hex[] = "0123456789ABCDEF";
|
||||
char out[3]={'%'};
|
||||
out[1] = hex[in>>4];
|
||||
out[2] = hex[in & 0xf];
|
||||
if(Curl_dyn_addn(&d, out, 3))
|
||||
return NULL;
|
||||
}
|
||||
string++;
|
||||
}
|
||||
|
||||
return Curl_dyn_ptr(&d);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue