Skip to content

Commit 6886504

Browse files
[strtox] another size optimization
1 parent 7c85d72 commit 6886504

File tree

1 file changed

+15
-13
lines changed

1 file changed

+15
-13
lines changed

src/libc/strtox.h

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -103,9 +103,10 @@ STRTOX_TYPE STRTOX_NAME(const char *nptr, char **endptr, int base)
103103
{
104104
unsigned STRTOX_TYPE acc;
105105
unsigned STRTOX_TYPE cutoff;
106-
const char *s;
107106
unsigned char cutlim;
108107
unsigned char c;
108+
unsigned char b;
109+
const char *s;
109110
bool neg;
110111
char any;
111112

@@ -119,6 +120,7 @@ STRTOX_TYPE STRTOX_NAME(const char *nptr, char **endptr, int base)
119120
return 0;
120121
}
121122

123+
b = base;
122124
s = nptr;
123125
neg = false;
124126

@@ -137,31 +139,31 @@ STRTOX_TYPE STRTOX_NAME(const char *nptr, char **endptr, int base)
137139
c = *s++;
138140
}
139141

140-
if ((base == 0 || base == 16) && c == '0' && (*s == 'x' || *s == 'X'))
142+
if ((b == 0 || b == 16) && c == '0' && (*s == 'x' || *s == 'X'))
141143
{
142144
c = s[1];
143145
s += 2;
144-
base = 16;
146+
b = 16;
145147
}
146-
else if ((base == 0 || base == 2) && c == '0' && (*s == 'b' || *s == 'B'))
148+
else if ((b == 0 || b == 2) && c == '0' && (*s == 'b' || *s == 'B'))
147149
{
148150
c = s[1];
149151
s += 2;
150-
base = 2;
152+
b = 2;
151153
}
152154

153-
if (base == 0)
155+
if (b == 0)
154156
{
155-
base = c == '0' ? 8 : 10;
157+
b = c == '0' ? 8 : 10;
156158
}
157159

158160
#if STRTOX_SIGNED
159161
cutoff = neg ? -(unsigned STRTOX_TYPE)(STRTOX_MIN) : STRTOX_MAX;
160-
cutlim = cutoff % base;
161-
cutoff /= base;
162+
cutlim = cutoff % b;
163+
cutoff /= b;
162164
#else
163-
cutoff = STRTOX_MAX / base;
164-
cutlim = STRTOX_MAX % base;
165+
cutoff = STRTOX_MAX / b;
166+
cutlim = STRTOX_MAX % b;
165167
#endif
166168

167169
for (acc = 0, any = 0;; c = *s++)
@@ -178,7 +180,7 @@ STRTOX_TYPE STRTOX_NAME(const char *nptr, char **endptr, int base)
178180
{
179181
break;
180182
}
181-
if (c >= base)
183+
if (c >= b)
182184
{
183185
break;
184186
}
@@ -190,7 +192,7 @@ STRTOX_TYPE STRTOX_NAME(const char *nptr, char **endptr, int base)
190192
else
191193
{
192194
any = 1;
193-
acc *= base;
195+
acc *= b;
194196
acc += c;
195197
}
196198
}

0 commit comments

Comments
 (0)