Skip to content
Snippets Groups Projects
Commit 9f3bd299 authored by Tom Lane's avatar Tom Lane
Browse files

Faster test for overflow in str2txid, from Marko.

parent b196b7fb
No related branches found
No related tags found
No related merge requests found
...@@ -234,24 +234,27 @@ static txid ...@@ -234,24 +234,27 @@ static txid
str2txid(const char *s, const char **endp) str2txid(const char *s, const char **endp)
{ {
txid val = 0; txid val = 0;
txid cutoff = MAX_TXID / 10;
txid cutlim = MAX_TXID % 10;
for (; *s; s++) for (; *s; s++)
{ {
txid last = val; unsigned d;
if (*s < '0' || *s > '9') if (*s < '0' || *s > '9')
break; break;
d = *s - '0';
val = val * 10 + (*s - '0');
/* /*
* check for overflow * check for overflow
*/ */
if (val > MAX_TXID || (val / 10) != last) if (val > cutoff || (val == cutoff && d > cutlim))
{ {
val = 0; val = 0;
break; break;
} }
val = val * 10 + d;
} }
if (endp) if (endp)
*endp = s; *endp = s;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment