[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libmicrohttpd2] 04/21: xdigittovalue(): optimised.
From: |
Admin |
Subject: |
[libmicrohttpd2] 04/21: xdigittovalue(): optimised. |
Date: |
Fri, 13 Jun 2025 23:38:12 +0200 |
This is an automated email from the git hooks/post-receive script.
karlson2k pushed a commit to branch master
in repository libmicrohttpd2.
commit 514dca2e6c7867b17cf4541f02e39e456e6b5758
Author: Evgeny Grin (Karlson2k) <k2k@drgrin.dev>
AuthorDate: Wed Jun 11 17:37:58 2025 +0200
xdigittovalue(): optimised.
Improved performance of the "fast code" version.
Improved both performance and the size of the "compact code" version.
Can be backported.
---
src/mhd2/mhd_str.c | 583 ++++++++++++++++++++++++-----------------------------
1 file changed, 268 insertions(+), 315 deletions(-)
diff --git a/src/mhd2/mhd_str.c b/src/mhd2/mhd_str.c
index dd3b5c0..7935135 100644
--- a/src/mhd2/mhd_str.c
+++ b/src/mhd2/mhd_str.c
@@ -209,323 +209,276 @@ todigitvalue (char c)
MHD_static_inline_ int
xdigittovalue (char c)
{
+ const unsigned char uc = (unsigned char) c; /* Force unsigned value */
#if ! defined(MHD_FAVOR_SMALL_CODE)
- switch ((unsigned char) c)
- {
-#if 0 /* Disabled to give the compiler a hint about low probability */
- case 0x00U: /* NUL */
- case 0x01U: /* SOH */
- case 0x02U: /* STX */
- case 0x03U: /* ETX */
- case 0x04U: /* EOT */
- case 0x05U: /* ENQ */
- case 0x06U: /* ACK */
- case 0x07U: /* BEL */
- case 0x08U: /* BS */
- case 0x09U: /* HT */
- case 0x0AU: /* LF */
- case 0x0BU: /* VT */
- case 0x0CU: /* FF */
- case 0x0DU: /* CR */
- case 0x0EU: /* SO */
- case 0x0FU: /* SI */
- case 0x10U: /* DLE */
- case 0x11U: /* DC1 */
- case 0x12U: /* DC2 */
- case 0x13U: /* DC3 */
- case 0x14U: /* DC4 */
- case 0x15U: /* NAK */
- case 0x16U: /* SYN */
- case 0x17U: /* ETB */
- case 0x18U: /* CAN */
- case 0x19U: /* EM */
- case 0x1AU: /* SUB */
- case 0x1BU: /* ESC */
- case 0x1CU: /* FS */
- case 0x1DU: /* GS */
- case 0x1EU: /* RS */
- case 0x1FU: /* US */
- case 0x20U: /* ' ' */
- case 0x21U: /* '!' */
- case 0x22U: /* '"' */
- case 0x23U: /* '#' */
- case 0x24U: /* '$' */
- case 0x25U: /* '%' */
- case 0x26U: /* '&' */
- case 0x27U: /* '\'' */
- case 0x28U: /* '(' */
- case 0x29U: /* ')' */
- case 0x2AU: /* '*' */
- case 0x2BU: /* '+' */
- case 0x2CU: /* ',' */
- case 0x2DU: /* '-' */
- case 0x2EU: /* '.' */
- case 0x2FU: /* '/' */
- return -1;
-#endif
- case 0x30U: /* '0' */
- return 0;
- case 0x31U: /* '1' */
- return 1;
- case 0x32U: /* '2' */
- return 2;
- case 0x33U: /* '3' */
- return 3;
- case 0x34U: /* '4' */
- return 4;
- case 0x35U: /* '5' */
- return 5;
- case 0x36U: /* '6' */
- return 6;
- case 0x37U: /* '7' */
- return 7;
- case 0x38U: /* '8' */
- return 8;
- case 0x39U: /* '9' */
- return 9;
-#if 0 /* Disabled to give the compiler a hint about low probability */
- case 0x3AU: /* ':' */
- case 0x3BU: /* ';' */
- case 0x3CU: /* '<' */
- case 0x3DU: /* '=' */
- case 0x3EU: /* '>' */
- case 0x3FU: /* '?' */
- case 0x40U: /* '@' */
- return -1;
-#endif
- case 0x41U: /* 'A' */
- return 0xAU;
- case 0x42U: /* 'B' */
- return 0xBU;
- case 0x43U: /* 'C' */
- return 0xCU;
- case 0x44U: /* 'D' */
- return 0xDU;
- case 0x45U: /* 'E' */
- return 0xEU;
- case 0x46U: /* 'F' */
- return 0xFU;
-#if 0 /* Disabled to give the compiler a hint about low probability */
- case 0x47U: /* 'G' */
- case 0x48U: /* 'H' */
- case 0x49U: /* 'I' */
- case 0x4AU: /* 'J' */
- case 0x4BU: /* 'K' */
- case 0x4CU: /* 'L' */
- case 0x4DU: /* 'M' */
- case 0x4EU: /* 'N' */
- case 0x4FU: /* 'O' */
- case 0x50U: /* 'P' */
- case 0x51U: /* 'Q' */
- case 0x52U: /* 'R' */
- case 0x53U: /* 'S' */
- case 0x54U: /* 'T' */
- case 0x55U: /* 'U' */
- case 0x56U: /* 'V' */
- case 0x57U: /* 'W' */
- case 0x58U: /* 'X' */
- case 0x59U: /* 'Y' */
- case 0x5AU: /* 'Z' */
- case 0x5BU: /* '[' */
- case 0x5CU: /* '\' */
- case 0x5DU: /* ']' */
- case 0x5EU: /* '^' */
- case 0x5FU: /* '_' */
- case 0x60U: /* '`' */
- return -1;
-#endif
- case 0x61U: /* 'a' */
- return 0xAU;
- case 0x62U: /* 'b' */
- return 0xBU;
- case 0x63U: /* 'c' */
- return 0xCU;
- case 0x64U: /* 'd' */
- return 0xDU;
- case 0x65U: /* 'e' */
- return 0xEU;
- case 0x66U: /* 'f' */
- return 0xFU;
-#if 0 /* Disabled to give the compiler a hint about low probability */
- case 0x67U: /* 'g' */
- case 0x68U: /* 'h' */
- case 0x69U: /* 'i' */
- case 0x6AU: /* 'j' */
- case 0x6BU: /* 'k' */
- case 0x6CU: /* 'l' */
- case 0x6DU: /* 'm' */
- case 0x6EU: /* 'n' */
- case 0x6FU: /* 'o' */
- case 0x70U: /* 'p' */
- case 0x71U: /* 'q' */
- case 0x72U: /* 'r' */
- case 0x73U: /* 's' */
- case 0x74U: /* 't' */
- case 0x75U: /* 'u' */
- case 0x76U: /* 'v' */
- case 0x77U: /* 'w' */
- case 0x78U: /* 'x' */
- case 0x79U: /* 'y' */
- case 0x7AU: /* 'z' */
- case 0x7BU: /* '{' */
- case 0x7CU: /* '|' */
- case 0x7DU: /* '}' */
- case 0x7EU: /* '~' */
- case 0x7FU: /* DEL */
- case 0x80U: /* EXT */
- case 0x81U: /* EXT */
- case 0x82U: /* EXT */
- case 0x83U: /* EXT */
- case 0x84U: /* EXT */
- case 0x85U: /* EXT */
- case 0x86U: /* EXT */
- case 0x87U: /* EXT */
- case 0x88U: /* EXT */
- case 0x89U: /* EXT */
- case 0x8AU: /* EXT */
- case 0x8BU: /* EXT */
- case 0x8CU: /* EXT */
- case 0x8DU: /* EXT */
- case 0x8EU: /* EXT */
- case 0x8FU: /* EXT */
- case 0x90U: /* EXT */
- case 0x91U: /* EXT */
- case 0x92U: /* EXT */
- case 0x93U: /* EXT */
- case 0x94U: /* EXT */
- case 0x95U: /* EXT */
- case 0x96U: /* EXT */
- case 0x97U: /* EXT */
- case 0x98U: /* EXT */
- case 0x99U: /* EXT */
- case 0x9AU: /* EXT */
- case 0x9BU: /* EXT */
- case 0x9CU: /* EXT */
- case 0x9DU: /* EXT */
- case 0x9EU: /* EXT */
- case 0x9FU: /* EXT */
- case 0xA0U: /* EXT */
- case 0xA1U: /* EXT */
- case 0xA2U: /* EXT */
- case 0xA3U: /* EXT */
- case 0xA4U: /* EXT */
- case 0xA5U: /* EXT */
- case 0xA6U: /* EXT */
- case 0xA7U: /* EXT */
- case 0xA8U: /* EXT */
- case 0xA9U: /* EXT */
- case 0xAAU: /* EXT */
- case 0xABU: /* EXT */
- case 0xACU: /* EXT */
- case 0xADU: /* EXT */
- case 0xAEU: /* EXT */
- case 0xAFU: /* EXT */
- case 0xB0U: /* EXT */
- case 0xB1U: /* EXT */
- case 0xB2U: /* EXT */
- case 0xB3U: /* EXT */
- case 0xB4U: /* EXT */
- case 0xB5U: /* EXT */
- case 0xB6U: /* EXT */
- case 0xB7U: /* EXT */
- case 0xB8U: /* EXT */
- case 0xB9U: /* EXT */
- case 0xBAU: /* EXT */
- case 0xBBU: /* EXT */
- case 0xBCU: /* EXT */
- case 0xBDU: /* EXT */
- case 0xBEU: /* EXT */
- case 0xBFU: /* EXT */
- case 0xC0U: /* EXT */
- case 0xC1U: /* EXT */
- case 0xC2U: /* EXT */
- case 0xC3U: /* EXT */
- case 0xC4U: /* EXT */
- case 0xC5U: /* EXT */
- case 0xC6U: /* EXT */
- case 0xC7U: /* EXT */
- case 0xC8U: /* EXT */
- case 0xC9U: /* EXT */
- case 0xCAU: /* EXT */
- case 0xCBU: /* EXT */
- case 0xCCU: /* EXT */
- case 0xCDU: /* EXT */
- case 0xCEU: /* EXT */
- case 0xCFU: /* EXT */
- case 0xD0U: /* EXT */
- case 0xD1U: /* EXT */
- case 0xD2U: /* EXT */
- case 0xD3U: /* EXT */
- case 0xD4U: /* EXT */
- case 0xD5U: /* EXT */
- case 0xD6U: /* EXT */
- case 0xD7U: /* EXT */
- case 0xD8U: /* EXT */
- case 0xD9U: /* EXT */
- case 0xDAU: /* EXT */
- case 0xDBU: /* EXT */
- case 0xDCU: /* EXT */
- case 0xDDU: /* EXT */
- case 0xDEU: /* EXT */
- case 0xDFU: /* EXT */
- case 0xE0U: /* EXT */
- case 0xE1U: /* EXT */
- case 0xE2U: /* EXT */
- case 0xE3U: /* EXT */
- case 0xE4U: /* EXT */
- case 0xE5U: /* EXT */
- case 0xE6U: /* EXT */
- case 0xE7U: /* EXT */
- case 0xE8U: /* EXT */
- case 0xE9U: /* EXT */
- case 0xEAU: /* EXT */
- case 0xEBU: /* EXT */
- case 0xECU: /* EXT */
- case 0xEDU: /* EXT */
- case 0xEEU: /* EXT */
- case 0xEFU: /* EXT */
- case 0xF0U: /* EXT */
- case 0xF1U: /* EXT */
- case 0xF2U: /* EXT */
- case 0xF3U: /* EXT */
- case 0xF4U: /* EXT */
- case 0xF5U: /* EXT */
- case 0xF6U: /* EXT */
- case 0xF7U: /* EXT */
- case 0xF8U: /* EXT */
- case 0xF9U: /* EXT */
- case 0xFAU: /* EXT */
- case 0xFBU: /* EXT */
- case 0xFCU: /* EXT */
- case 0xFDU: /* EXT */
- case 0xFEU: /* EXT */
- case 0xFFU: /* EXT */
- return -1;
- default:
- mhd_assert (0);
- break; /* Should be unreachable */
-#else
- default:
- break;
-#endif
- }
- return -1;
+ static const signed char map_xdigit_to_value[256] = {
+ -1 /* 0x00 (NUL) */,
+ -1 /* 0x01 (SOH) */,
+ -1 /* 0x02 (STX) */,
+ -1 /* 0x03 (ETX) */,
+ -1 /* 0x04 (EOT) */,
+ -1 /* 0x05 (ENQ) */,
+ -1 /* 0x06 (ACK) */,
+ -1 /* 0x07 (BEL) */,
+ -1 /* 0x08 (BS) */,
+ -1 /* 0x09 (HT) */,
+ -1 /* 0x0A (LF) */,
+ -1 /* 0x0B (VT) */,
+ -1 /* 0x0C (FF) */,
+ -1 /* 0x0D (CR) */,
+ -1 /* 0x0E (SO) */,
+ -1 /* 0x0F (SI) */,
+ -1 /* 0x10 (DLE) */,
+ -1 /* 0x11 (DC1) */,
+ -1 /* 0x12 (DC2) */,
+ -1 /* 0x13 (DC3) */,
+ -1 /* 0x14 (DC4) */,
+ -1 /* 0x15 (NAK) */,
+ -1 /* 0x16 (SYN) */,
+ -1 /* 0x17 (ETB) */,
+ -1 /* 0x18 (CAN) */,
+ -1 /* 0x19 (EM) */,
+ -1 /* 0x1A (SUB) */,
+ -1 /* 0x1B (ESC) */,
+ -1 /* 0x1C (FS) */,
+ -1 /* 0x1D (GS) */,
+ -1 /* 0x1E (RS) */,
+ -1 /* 0x1F (US) */,
+ -1 /* 0x20 (' ') */,
+ -1 /* 0x21 ('!') */,
+ -1 /* 0x22 ('"') */,
+ -1 /* 0x23 ('#') */,
+ -1 /* 0x24 ('$') */,
+ -1 /* 0x25 ('%') */,
+ -1 /* 0x26 ('&') */,
+ -1 /* 0x27 ('\'') */,
+ -1 /* 0x28 ('(') */,
+ -1 /* 0x29 (')') */,
+ -1 /* 0x2A ('*') */,
+ -1 /* 0x2B ('+') */,
+ -1 /* 0x2C (',') */,
+ -1 /* 0x2D ('-') */,
+ -1 /* 0x2E ('.') */,
+ -1 /* 0x2F ('/') */,
+ 0 /* 0x30 ('0') */,
+ 1 /* 0x31 ('1') */,
+ 2 /* 0x32 ('2') */,
+ 3 /* 0x33 ('3') */,
+ 4 /* 0x34 ('4') */,
+ 5 /* 0x35 ('5') */,
+ 6 /* 0x36 ('6') */,
+ 7 /* 0x37 ('7') */,
+ 8 /* 0x38 ('8') */,
+ 9 /* 0x39 ('9') */,
+ -1 /* 0x3A (':') */,
+ -1 /* 0x3B (';') */,
+ -1 /* 0x3C ('<') */,
+ -1 /* 0x3D ('=') */,
+ -1 /* 0x3E ('>') */,
+ -1 /* 0x3F ('?') */,
+ -1 /* 0x40 ('@') */,
+ 10 /* 0x41 ('A') */,
+ 11 /* 0x42 ('B') */,
+ 12 /* 0x43 ('C') */,
+ 13 /* 0x44 ('D') */,
+ 14 /* 0x45 ('E') */,
+ 15 /* 0x46 ('F') */,
+ -1 /* 0x47 ('G') */,
+ -1 /* 0x48 ('H') */,
+ -1 /* 0x49 ('I') */,
+ -1 /* 0x4A ('J') */,
+ -1 /* 0x4B ('K') */,
+ -1 /* 0x4C ('L') */,
+ -1 /* 0x4D ('M') */,
+ -1 /* 0x4E ('N') */,
+ -1 /* 0x4F ('O') */,
+ -1 /* 0x50 ('P') */,
+ -1 /* 0x51 ('Q') */,
+ -1 /* 0x52 ('R') */,
+ -1 /* 0x53 ('S') */,
+ -1 /* 0x54 ('T') */,
+ -1 /* 0x55 ('U') */,
+ -1 /* 0x56 ('V') */,
+ -1 /* 0x57 ('W') */,
+ -1 /* 0x58 ('X') */,
+ -1 /* 0x59 ('Y') */,
+ -1 /* 0x5A ('Z') */,
+ -1 /* 0x5B ('[') */,
+ -1 /* 0x5C ('\') */,
+ -1 /* 0x5D (']') */,
+ -1 /* 0x5E ('^') */,
+ -1 /* 0x5F ('_') */,
+ -1 /* 0x60 ('`') */,
+ 10 /* 0x61 ('a') */,
+ 11 /* 0x62 ('b') */,
+ 12 /* 0x63 ('c') */,
+ 13 /* 0x64 ('d') */,
+ 14 /* 0x65 ('e') */,
+ 15 /* 0x66 ('f') */,
+ -1 /* 0x67 ('g') */,
+ -1 /* 0x68 ('h') */,
+ -1 /* 0x69 ('i') */,
+ -1 /* 0x6A ('j') */,
+ -1 /* 0x6B ('k') */,
+ -1 /* 0x6C ('l') */,
+ -1 /* 0x6D ('m') */,
+ -1 /* 0x6E ('n') */,
+ -1 /* 0x6F ('o') */,
+ -1 /* 0x70 ('p') */,
+ -1 /* 0x71 ('q') */,
+ -1 /* 0x72 ('r') */,
+ -1 /* 0x73 ('s') */,
+ -1 /* 0x74 ('t') */,
+ -1 /* 0x75 ('u') */,
+ -1 /* 0x76 ('v') */,
+ -1 /* 0x77 ('w') */,
+ -1 /* 0x78 ('x') */,
+ -1 /* 0x79 ('y') */,
+ -1 /* 0x7A ('z') */,
+ -1 /* 0x7B ('{') */,
+ -1 /* 0x7C ('|') */,
+ -1 /* 0x7D ('}') */,
+ -1 /* 0x7E ('~') */,
+ -1 /* 0x7F (DEL) */,
+ -1 /* 0x80 (EXT) */,
+ -1 /* 0x81 (EXT) */,
+ -1 /* 0x82 (EXT) */,
+ -1 /* 0x83 (EXT) */,
+ -1 /* 0x84 (EXT) */,
+ -1 /* 0x85 (EXT) */,
+ -1 /* 0x86 (EXT) */,
+ -1 /* 0x87 (EXT) */,
+ -1 /* 0x88 (EXT) */,
+ -1 /* 0x89 (EXT) */,
+ -1 /* 0x8A (EXT) */,
+ -1 /* 0x8B (EXT) */,
+ -1 /* 0x8C (EXT) */,
+ -1 /* 0x8D (EXT) */,
+ -1 /* 0x8E (EXT) */,
+ -1 /* 0x8F (EXT) */,
+ -1 /* 0x90 (EXT) */,
+ -1 /* 0x91 (EXT) */,
+ -1 /* 0x92 (EXT) */,
+ -1 /* 0x93 (EXT) */,
+ -1 /* 0x94 (EXT) */,
+ -1 /* 0x95 (EXT) */,
+ -1 /* 0x96 (EXT) */,
+ -1 /* 0x97 (EXT) */,
+ -1 /* 0x98 (EXT) */,
+ -1 /* 0x99 (EXT) */,
+ -1 /* 0x9A (EXT) */,
+ -1 /* 0x9B (EXT) */,
+ -1 /* 0x9C (EXT) */,
+ -1 /* 0x9D (EXT) */,
+ -1 /* 0x9E (EXT) */,
+ -1 /* 0x9F (EXT) */,
+ -1 /* 0xA0 (EXT) */,
+ -1 /* 0xA1 (EXT) */,
+ -1 /* 0xA2 (EXT) */,
+ -1 /* 0xA3 (EXT) */,
+ -1 /* 0xA4 (EXT) */,
+ -1 /* 0xA5 (EXT) */,
+ -1 /* 0xA6 (EXT) */,
+ -1 /* 0xA7 (EXT) */,
+ -1 /* 0xA8 (EXT) */,
+ -1 /* 0xA9 (EXT) */,
+ -1 /* 0xAA (EXT) */,
+ -1 /* 0xAB (EXT) */,
+ -1 /* 0xAC (EXT) */,
+ -1 /* 0xAD (EXT) */,
+ -1 /* 0xAE (EXT) */,
+ -1 /* 0xAF (EXT) */,
+ -1 /* 0xB0 (EXT) */,
+ -1 /* 0xB1 (EXT) */,
+ -1 /* 0xB2 (EXT) */,
+ -1 /* 0xB3 (EXT) */,
+ -1 /* 0xB4 (EXT) */,
+ -1 /* 0xB5 (EXT) */,
+ -1 /* 0xB6 (EXT) */,
+ -1 /* 0xB7 (EXT) */,
+ -1 /* 0xB8 (EXT) */,
+ -1 /* 0xB9 (EXT) */,
+ -1 /* 0xBA (EXT) */,
+ -1 /* 0xBB (EXT) */,
+ -1 /* 0xBC (EXT) */,
+ -1 /* 0xBD (EXT) */,
+ -1 /* 0xBE (EXT) */,
+ -1 /* 0xBF (EXT) */,
+ -1 /* 0xC0 (EXT) */,
+ -1 /* 0xC1 (EXT) */,
+ -1 /* 0xC2 (EXT) */,
+ -1 /* 0xC3 (EXT) */,
+ -1 /* 0xC4 (EXT) */,
+ -1 /* 0xC5 (EXT) */,
+ -1 /* 0xC6 (EXT) */,
+ -1 /* 0xC7 (EXT) */,
+ -1 /* 0xC8 (EXT) */,
+ -1 /* 0xC9 (EXT) */,
+ -1 /* 0xCA (EXT) */,
+ -1 /* 0xCB (EXT) */,
+ -1 /* 0xCC (EXT) */,
+ -1 /* 0xCD (EXT) */,
+ -1 /* 0xCE (EXT) */,
+ -1 /* 0xCF (EXT) */,
+ -1 /* 0xD0 (EXT) */,
+ -1 /* 0xD1 (EXT) */,
+ -1 /* 0xD2 (EXT) */,
+ -1 /* 0xD3 (EXT) */,
+ -1 /* 0xD4 (EXT) */,
+ -1 /* 0xD5 (EXT) */,
+ -1 /* 0xD6 (EXT) */,
+ -1 /* 0xD7 (EXT) */,
+ -1 /* 0xD8 (EXT) */,
+ -1 /* 0xD9 (EXT) */,
+ -1 /* 0xDA (EXT) */,
+ -1 /* 0xDB (EXT) */,
+ -1 /* 0xDC (EXT) */,
+ -1 /* 0xDD (EXT) */,
+ -1 /* 0xDE (EXT) */,
+ -1 /* 0xDF (EXT) */,
+ -1 /* 0xE0 (EXT) */,
+ -1 /* 0xE1 (EXT) */,
+ -1 /* 0xE2 (EXT) */,
+ -1 /* 0xE3 (EXT) */,
+ -1 /* 0xE4 (EXT) */,
+ -1 /* 0xE5 (EXT) */,
+ -1 /* 0xE6 (EXT) */,
+ -1 /* 0xE7 (EXT) */,
+ -1 /* 0xE8 (EXT) */,
+ -1 /* 0xE9 (EXT) */,
+ -1 /* 0xEA (EXT) */,
+ -1 /* 0xEB (EXT) */,
+ -1 /* 0xEC (EXT) */,
+ -1 /* 0xED (EXT) */,
+ -1 /* 0xEE (EXT) */,
+ -1 /* 0xEF (EXT) */,
+ -1 /* 0xF0 (EXT) */,
+ -1 /* 0xF1 (EXT) */,
+ -1 /* 0xF2 (EXT) */,
+ -1 /* 0xF3 (EXT) */,
+ -1 /* 0xF4 (EXT) */,
+ -1 /* 0xF5 (EXT) */,
+ -1 /* 0xF6 (EXT) */,
+ -1 /* 0xF7 (EXT) */,
+ -1 /* 0xF8 (EXT) */,
+ -1 /* 0xF9 (EXT) */,
+ -1 /* 0xFA (EXT) */,
+ -1 /* 0xFB (EXT) */,
+ -1 /* 0xFC (EXT) */,
+ -1 /* 0xFD (EXT) */,
+ -1 /* 0xFE (EXT) */,
+ -1 /* 0xFF (EXT) */
+ };
+ return map_xdigit_to_value[uc];
#else /* MHD_FAVOR_SMALL_CODE */
- if (c <= 9)
- {
- if (c >= 0)
- return (unsigned char) (c - '0');
- }
- else if (c <= 'F')
- {
- if (c >= 'A')
- return (unsigned char) (c - 'A' + 10);
- }
- else if (c >= 'a')
- {
- if (c <= 'f')
- return (unsigned char) (c - 'a' + 10);
- }
+ unsigned int try_val;
+
+ try_val = uc - (unsigned char) '0';
+ if (9 >= try_val)
+ return (int) (unsigned int) try_val;
+ try_val = (uc | 0x20u /* fold case */) - (unsigned char) 'a';
+ if (5 >= try_val)
+ return (int) (unsigned int) (try_val + 10u);
return -1;
#endif /* MHD_FAVOR_SMALL_CODE */
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [libmicrohttpd2] branch master updated (cdd4c1f -> a71f9db), Admin, 2025/06/13
- [libmicrohttpd2] 09/21: mhd_str: added 8 bit -> 2 xdigits one-pass encoding, Admin, 2025/06/13
- [libmicrohttpd2] 11/21: mhd_str: optimised caseless comparisons and case transformations, Admin, 2025/06/13
- [libmicrohttpd2] 13/21: parse_http_std_method(): optimised, Admin, 2025/06/13
- [libmicrohttpd2] 21/21: perf_replies: added response sizes 8 MiB and 101 MiB, Admin, 2025/06/13
- [libmicrohttpd2] 02/21: bootstrap: make sure that pre-commit hook really used, Admin, 2025/06/13
- [libmicrohttpd2] 01/21: conn_data_send.c: fixed large sending, added some asserts, Admin, 2025/06/13
- [libmicrohttpd2] 04/21: xdigittovalue(): optimised.,
Admin <=
- [libmicrohttpd2] 18/21: Renamed test_postprocessor -> test_postparser to match API naming, Admin, 2025/06/13
- [libmicrohttpd2] 16/21: configure: minor check improvement, Admin, 2025/06/13
- [libmicrohttpd2] 12/21: mhd_locks: added W32 implementation based on SRW locks (and minor improvements), Admin, 2025/06/13
- [libmicrohttpd2] 10/21: configure: added release build linker flags, Admin, 2025/06/13
- [libmicrohttpd2] 15/21: POST parser: improved parsing performance by storing complete delimiter instead of boundary, Admin, 2025/06/13
- [libmicrohttpd2] 14/21: POST parser: optimised large upload processing, Admin, 2025/06/13
- [libmicrohttpd2] 07/21: daemon_start: cosmetics, fixed code style, Admin, 2025/06/13
- [libmicrohttpd2] 06/21: Fixed compiler warnings, Admin, 2025/06/13
- [libmicrohttpd2] 08/21: mhd_str: added functions attributes, fixed doxy, removed extra checks in functions, Admin, 2025/06/13
- [libmicrohttpd2] 03/21: bootstrap: English fixes, Admin, 2025/06/13