Просмотр исходного кода

Fix marauder script retarded number parsing

Willy-JL 1 год назад
Родитель
Сommit
3bd8757843
1 измененных файлов с 5 добавлено и 4 удалено
  1. 5 4
      wifi_marauder_companion/script/cJSON.c

+ 5 - 4
wifi_marauder_companion/script/cJSON.c

@@ -273,7 +273,7 @@ typedef struct {
 #define buffer_at_offset(buffer) ((buffer)->content + (buffer)->offset)
 
 /* Converts an array of characters to double. Alternative implementation of strtod() */
-double string_to_double(const char* str, char** endptr) {
+double string_to_double(const char* str, size_t* len) {
     double result = 0.0;
     int sign = 1;
     const char* p = str;
@@ -323,7 +323,7 @@ double string_to_double(const char* str, char** endptr) {
         result *= pow(10, exponent);
     }
 
-    *endptr = (char*)p;
+    *len = p - str;
 
     return sign * result;
 }
@@ -373,7 +373,8 @@ static cJSON_bool parse_number(cJSON* const item, parse_buffer* const input_buff
 loop_end:
     number_c_string[i] = '\0';
 
-    number = string_to_double((const char*)number_c_string, (char**)&after_end);
+    size_t len = 0;
+    number = string_to_double((const char*)number_c_string, &len);
     if(number_c_string == after_end) {
         return false; /* parse_error */
     }
@@ -391,7 +392,7 @@ loop_end:
 
     item->type = cJSON_Number;
 
-    input_buffer->offset += (size_t)(after_end - number_c_string);
+    input_buffer->offset += len;
     return true;
 }