long x;
char buffer[256]; /* For errors */
- if (!PyArg_Parse(v, "s", &s))
- return NULL;
+ s = PyString_AS_STRING(v);
while (*s && isspace(Py_CHARMASK(*s)))
s++;
if (s[0] == '\0') {
PyErr_SetString(PyExc_ValueError, buffer);
return NULL;
}
+ else if (end-s != PyString_GET_SIZE(v)) {
+ PyErr_SetString(PyExc_ValueError,
+ "null byte in argument for int()");
+ return NULL;
+ }
else if (errno != 0) {
sprintf(buffer, "int() literal too large: %.200s", s);
PyErr_SetString(PyExc_ValueError, buffer);
PyObject *x;
char buffer[256]; /* For errors */
- if (!PyArg_Parse(v, "s", &s))
- return NULL;
-
+ s = PyString_AS_STRING(v);
while (*s && isspace(Py_CHARMASK(*s)))
s++;
if (s[0] == '\0') {
Py_DECREF(x);
return NULL;
}
+ else if (end-s != PyString_GET_SIZE(v)) {
+ PyErr_SetString(PyExc_ValueError,
+ "null byte in argument for float()");
+ return NULL;
+ }
return x;
}
double x;
char buffer[256]; /* For errors */
- if (!PyArg_Parse(v, "s", &s))
- return NULL;
+ s = PyString_AS_STRING(v);
while (*s && isspace(Py_CHARMASK(*s)))
s++;
if (s[0] == '\0') {
PyErr_SetString(PyExc_ValueError, buffer);
return NULL;
}
+ else if (end-s != PyString_GET_SIZE(v)) {
+ PyErr_SetString(PyExc_ValueError,
+ "null byte in argument for float()");
+ return NULL;
+ }
else if (errno != 0) {
sprintf(buffer, "float() literal too large: %.200s", s);
PyErr_SetString(PyExc_ValueError, buffer);