summaryrefslogtreecommitdiff
path: root/strings/my_strtoll10.c
diff options
context:
space:
mode:
Diffstat (limited to 'strings/my_strtoll10.c')
-rw-r--r--strings/my_strtoll10.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/strings/my_strtoll10.c b/strings/my_strtoll10.c
index 6319fbb4d9f..493d0d63de2 100644
--- a/strings/my_strtoll10.c
+++ b/strings/my_strtoll10.c
@@ -22,9 +22,9 @@
#define ULONGLONG_MAX (~(ulonglong) 0)
#define MAX_NEGATIVE_NUMBER ((ulonglong) LL(0x8000000000000000))
#define INIT_CNT 9
-#define LFACTOR LL(1000000000)
-#define LFACTOR1 LL(10000000000)
-#define LFACTOR2 LL(100000000000)
+#define LFACTOR ULL(1000000000)
+#define LFACTOR1 ULL(10000000000)
+#define LFACTOR2 ULL(100000000000)
static unsigned long lfactor[9]=
{
@@ -113,8 +113,8 @@ longlong my_strtoll10(const char *nptr, char **endptr, int *error)
negative= 1;
if (++s == end)
goto no_conv;
- cutoff= MAX_NEGATIVE_NUMBER / LL(100000000000);
- cutoff2= (MAX_NEGATIVE_NUMBER % LL(100000000000)) / 100;
+ cutoff= MAX_NEGATIVE_NUMBER / LFACTOR2;
+ cutoff2= (MAX_NEGATIVE_NUMBER % LFACTOR2) / 100;
cutoff3= MAX_NEGATIVE_NUMBER % 100;
}
else
@@ -125,8 +125,8 @@ longlong my_strtoll10(const char *nptr, char **endptr, int *error)
if (++s == end)
goto no_conv;
}
- cutoff= ULONGLONG_MAX / LL(100000000000);
- cutoff2= ULONGLONG_MAX % LL(100000000000) / 100;
+ cutoff= ULONGLONG_MAX / LFACTOR2;
+ cutoff2= ULONGLONG_MAX % LFACTOR2 / 100;
cutoff3= ULONGLONG_MAX % 100;
}
@@ -196,15 +196,15 @@ longlong my_strtoll10(const char *nptr, char **endptr, int *error)
goto overflow;
/* Check that we didn't get an overflow with the last digit */
- if (i > cutoff || i == cutoff && (j > cutoff2 || j == cutoff2 &&
- k > cutoff3))
+ if (i > cutoff || (i == cutoff && ((j > cutoff2 || j == cutoff2) &&
+ k > cutoff3)))
goto overflow;
li=i*LFACTOR2+ (ulonglong) j*100 + k;
return (longlong) li;
overflow: /* *endptr is set here */
*error= MY_ERRNO_ERANGE;
- return negative ? LONGLONG_MIN : ULONGLONG_MAX;
+ return negative ? LONGLONG_MIN : (longlong) ULONGLONG_MAX;
end_i:
*endptr= (char*) s;