On 06/06/2017 11:46 AM, Jon Ribbens wrote: > On 2017-06-06, Thomas Nyberg <tomuxi...@gmx.com> wrote: >> My changes feel a bit hacky. I wanted to just drop a straight repr() in, >> but I didn't want to change the code too much since I assume the string >> formatting is already there for a reason (e.g. "%.200s"). > > Just change the '%.200s' to '%.200R' and it should work. The '.200' > isn't necessary to avoid buffer-overflow or anything, but an error > message of unlimited length is probably a good thing to avoid anyway ;-) > That causes a segfault for me. I.e. if I use this patch:
--------------------- $ git diff master diff --git a/Python/pystrtod.c b/Python/pystrtod.c index 64d0c52..c62db6b 100644 --- a/Python/pystrtod.c +++ b/Python/pystrtod.c @@ -357,7 +357,7 @@ PyOS_string_to_double(const char *s, else if (fail_pos == s) PyErr_Format(PyExc_ValueError, "could not convert string to float: " - "%.200s", s); + "%.200R", s); else if (errno == ERANGE && fabs(x) >= 1.0 && overflow_exception) PyErr_Format(overflow_exception, "value too large to convert to float: " --------------------- Is it because the string object `s` is a const char* string and not a python string and hence the raw R isn't working right? Regardless, I think that the logic should probably be handled above this function (i.e. as I posted in my other reply to you). In any case, thanks for the help! Cheers, Thomas -- https://mail.python.org/mailman/listinfo/python-list