diff options
author | Joe Orton <joe@manyfish.uk> | 2020-12-06 10:24:01 +0000 |
---|---|---|
committer | Joe Orton <joe@manyfish.uk> | 2020-12-06 10:24:01 +0000 |
commit | bfbe0802736d9519b8d30a5cf198b1d12f685ddd (patch) | |
tree | fb31a221aecc76cbe02ccb002393e99c41965154 | |
parent | a67a33cf4a5733f04b34646acb9af7b6635ef8b3 (diff) | |
download | neon-git-bfbe0802736d9519b8d30a5cf198b1d12f685ddd.tar.gz |
* src/ne_string.c (ne__strhash2hex, ne_strparam): Use fast hex lookup
array rather than NE_HEX2ASC.
-rw-r--r-- | src/ne_string.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/ne_string.c b/src/ne_string.c index 30bb468..801f79e 100644 --- a/src/ne_string.c +++ b/src/ne_string.c @@ -656,6 +656,13 @@ char *ne_vstrhash(unsigned int flags, va_list ap) } #endif +static const char hexmap[16] = { + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' +}; + +#define HEX2ASC(a) (hexmap[(unsigned)a & 0xf]) + char *ne__strhash2hex(const unsigned char *digest, size_t len, unsigned int flags) { @@ -678,8 +685,8 @@ char *ne__strhash2hex(const unsigned char *digest, size_t len, p = rv = ne_malloc(len * step + 1); for (n = 0; n < len; n++) { - *p++ = NE_HEX2ASC(digest[n] >> 4); - *p++ = NE_HEX2ASC(digest[n] & 0x0f); + *p++ = HEX2ASC(digest[n] >> 4); + *p++ = HEX2ASC(digest[n] & 0x0f); if (sep) *p++ = sep; } @@ -748,8 +755,8 @@ char *ne_strparam(const char *charset, const char *lang, } else { *rp++ = '%'; - *rp++ = NE_HEX2ASC(*p >> 4); - *rp++ = NE_HEX2ASC(*p & 0x0f); + *rp++ = HEX2ASC(*p >> 4); + *rp++ = HEX2ASC(*p & 0x0f); } } |