@@ -187,9 +187,11 @@ cdef extern from "parser/tokenizer.h":
187187 int64_t skipfooter
188188 # pick one, depending on whether the converter requires GIL
189189 float64_t (* double_converter_nogil)(const char * , char ** ,
190- char , char , char , int , int * ) nogil
190+ char , char , char ,
191+ int , int * , int * ) nogil
191192 float64_t (* double_converter_withgil)(const char * , char ** ,
192- char , char , char , int )
193+ char , char , char ,
194+ int , int * , int * )
193195
194196 # error handling
195197 char * warn_msg
@@ -237,12 +239,15 @@ cdef extern from "parser/tokenizer.h":
237239 uint64_t str_to_uint64(uint_state * state, char * p_item, int64_t int_max,
238240 uint64_t uint_max, int * error, char tsep) nogil
239241
240- float64_t xstrtod(const char * p, char ** q, char decimal, char sci,
241- char tsep, int skip_trailing, int * error) nogil
242- float64_t precise_xstrtod(const char * p, char ** q, char decimal, char sci,
243- char tsep, int skip_trailing, int * error) nogil
244- float64_t round_trip(const char * p, char ** q, char decimal, char sci,
245- char tsep, int skip_trailing) nogil
242+ float64_t xstrtod(const char * p, char ** q, char decimal,
243+ char sci, char tsep, int skip_trailing,
244+ int * error, int * maybe_int) nogil
245+ float64_t precise_xstrtod(const char * p, char ** q, char decimal,
246+ char sci, char tsep, int skip_trailing,
247+ int * error, int * maybe_int) nogil
248+ float64_t round_trip(const char * p, char ** q, char decimal,
249+ char sci, char tsep, int skip_trailing,
250+ int * error, int * maybe_int) nogil
246251
247252 int to_boolean(const char * item, uint8_t * val) nogil
248253
@@ -1737,7 +1742,8 @@ cdef _try_double(parser_t *parser, int64_t col,
17371742 assert parser.double_converter_withgil != NULL
17381743 error = _try_double_nogil(parser,
17391744 < float64_t (* )(const char * , char ** ,
1740- char , char , char , int , int * )
1745+ char , char , char ,
1746+ int , int * , int * )
17411747 nogil> parser.double_converter_withgil,
17421748 col, line_start, line_end,
17431749 na_filter, na_hashset, use_na_flist,
@@ -1751,7 +1757,7 @@ cdef _try_double(parser_t *parser, int64_t col,
17511757cdef inline int _try_double_nogil(parser_t * parser,
17521758 float64_t (* double_converter)(
17531759 const char * , char ** , char ,
1754- char , char , int , int * ) nogil,
1760+ char , char , int , int * , int * ) nogil,
17551761 int col, int line_start, int line_end,
17561762 bint na_filter, kh_str_starts_t * na_hashset,
17571763 bint use_na_flist,
@@ -1780,7 +1786,7 @@ cdef inline int _try_double_nogil(parser_t *parser,
17801786 else :
17811787 data[0 ] = double_converter(word, & p_end, parser.decimal,
17821788 parser.sci, parser.thousands,
1783- 1 , & error)
1789+ 1 , & error, NULL )
17841790 if error != 0 or p_end == word or p_end[0 ]:
17851791 error = 0
17861792 if (strcasecmp(word, cinf) == 0 or
@@ -1800,7 +1806,8 @@ cdef inline int _try_double_nogil(parser_t *parser,
18001806 for i in range (lines):
18011807 COLITER_NEXT(it, word)
18021808 data[0 ] = double_converter(word, & p_end, parser.decimal,
1803- parser.sci, parser.thousands, 1 , & error)
1809+ parser.sci, parser.thousands,
1810+ 1 , & error, NULL )
18041811 if error != 0 or p_end == word or p_end[0 ]:
18051812 error = 0
18061813 if (strcasecmp(word, cinf) == 0 or
0 commit comments