Browse Source

fixed strtoll() for win32: using _atoi64

Sergey Lyubka 12 years ago
parent
commit
bc40aa5442
2 changed files with 10 additions and 2 deletions
  1. 2 2
      mongoose.c
  2. 8 0
      test/unit_test.c

+ 2 - 2
mongoose.c

@@ -104,8 +104,8 @@ typedef long off_t;
 #define STRX(x) #x
 #define STR(x) STRX(x)
 #define __func__ __FILE__ ":" STR(__LINE__)
-#define strtoull(x, y, z) strtoul(x, y, z)
-#define strtoll(x, y, z) strtol(x, y, z)
+#define strtoull(x, y, z) (unsigned __int64) _atoi64(x)
+#define strtoll(x, y, z) _atoi64(x)
 #else
 #define __func__  __FUNCTION__
 #define strtoull(x, y, z) _strtoui64(x, y, z)

+ 8 - 0
test/unit_test.c

@@ -635,6 +635,13 @@ static void test_mg_get_cookie(void) {
   ASSERT(mg_get_cookie("a=1; b=2; c; d", "c", buf, sizeof(buf)) == -1);
 }
 
+static void test_strtoll(void) {
+  ASSERT(strtoll("0", NULL, 10) == 0);
+  ASSERT(strtoll("123", NULL, 10) == 123);
+  ASSERT(strtoll("-34", NULL, 10) == -34);
+  ASSERT(strtoll("3566626116", NULL, 10) == 3566626116);
+}
+
 int __cdecl main(void) {
   test_mg_strcasestr();
   test_alloc_vprintf();
@@ -654,6 +661,7 @@ int __cdecl main(void) {
   test_api_calls();
   test_url_decode();
   test_mg_get_cookie();
+  test_strtoll();
 #ifdef USE_LUA
   test_lua();
 #endif