← Commit list

15bc69a944

Daniel Stenberg
Daniel Stenberg
2026-09-18
SUCCESS Duration: 393s

Subject

strparse: speed up number parsing

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

lib/curlx/strparse.c+11 -6
@@ -191,12 +191,17 @@ static int str_num_base(const char **linep, curl_off_t *nump, curl_off_t max,
} while(valid_digit(*p, m));
}
else {
- do {
- int n = curlx_hexval(*p++);
- if(num > ((max - n) / base))
- return STRE_OVERFLOW;
- num = (num * base) + n;
- } while(valid_digit(*p, m));
+ curl_off_t cutoff = (max - (base - 1)) / base;
+ while(valid_digit(*p, m)) {
+ if(num <= cutoff)
+ num = (num * base) + curlx_hexval(*p++);
+ else {
+ int n = curlx_hexval(*p++);
+ if(num > ((max - n) / base))
+ return STRE_OVERFLOW;
+ num = (num * base) + n;
+ }
+ }
}
*nump = num;
*linep = p;