Remove the deprecated and useless "pend" argument from
PyFloat_FromString. (fixes bug #1650903)
This commit is contained in:
parent
9091e3a423
commit
428f0641ec
@ -430,10 +430,9 @@ booleans. The following macros are available, however.
|
|||||||
\versionadded{2.2}
|
\versionadded{2.2}
|
||||||
\end{cfuncdesc}
|
\end{cfuncdesc}
|
||||||
|
|
||||||
\begin{cfuncdesc}{PyObject*}{PyFloat_FromString}{PyObject *str, char **pend}
|
\begin{cfuncdesc}{PyObject*}{PyFloat_FromString}{PyObject *str}
|
||||||
Create a \ctype{PyFloatObject} object based on the string value in
|
Create a \ctype{PyFloatObject} object based on the string value in
|
||||||
\var{str}, or \NULL{} on failure. The \var{pend} argument is ignored. It
|
\var{str}, or \NULL{} on failure.
|
||||||
remains only for backward compatibility.
|
|
||||||
\end{cfuncdesc}
|
\end{cfuncdesc}
|
||||||
|
|
||||||
\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
|
\begin{cfuncdesc}{PyObject*}{PyFloat_FromDouble}{double v}
|
||||||
|
@ -385,7 +385,6 @@ PyFloat_FromDouble:double:v::
|
|||||||
|
|
||||||
PyFloat_FromString:PyObject*::+1:
|
PyFloat_FromString:PyObject*::+1:
|
||||||
PyFloat_FromString:PyObject*:str:0:
|
PyFloat_FromString:PyObject*:str:0:
|
||||||
PyFloat_FromString:char**:pend:0:ignored
|
|
||||||
|
|
||||||
PyFrozenSet_New:PyObject*::+1:
|
PyFrozenSet_New:PyObject*::+1:
|
||||||
PyFrozenSet_New:PyObject*:iterable:0:
|
PyFrozenSet_New:PyObject*:iterable:0:
|
||||||
|
@ -21,10 +21,8 @@ PyAPI_DATA(PyTypeObject) PyFloat_Type;
|
|||||||
#define PyFloat_Check(op) PyObject_TypeCheck(op, &PyFloat_Type)
|
#define PyFloat_Check(op) PyObject_TypeCheck(op, &PyFloat_Type)
|
||||||
#define PyFloat_CheckExact(op) ((op)->ob_type == &PyFloat_Type)
|
#define PyFloat_CheckExact(op) ((op)->ob_type == &PyFloat_Type)
|
||||||
|
|
||||||
/* Return Python float from string PyObject. Second argument ignored on
|
/* Return Python float from string PyObject. */
|
||||||
input, and, if non-NULL, NULL is stored into *junk (this tried to serve a
|
PyAPI_FUNC(PyObject *) PyFloat_FromString(PyObject*);
|
||||||
purpose once but can't be made to work as intended). */
|
|
||||||
PyAPI_FUNC(PyObject *) PyFloat_FromString(PyObject*, char** junk);
|
|
||||||
|
|
||||||
/* Return Python float from C double. */
|
/* Return Python float from C double. */
|
||||||
PyAPI_FUNC(PyObject *) PyFloat_FromDouble(double);
|
PyAPI_FUNC(PyObject *) PyFloat_FromDouble(double);
|
||||||
|
@ -28,6 +28,9 @@ TO DO
|
|||||||
Core and Builtins
|
Core and Builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- The long-deprecated argument "pend" of PyFloat_FromString() has been
|
||||||
|
removed.
|
||||||
|
|
||||||
- The dir() function has been extended to call the __dir__() method on
|
- The dir() function has been extended to call the __dir__() method on
|
||||||
its argument, if it exists. If not, it will work like before. This allows
|
its argument, if it exists. If not, it will work like before. This allows
|
||||||
customizing the output of dir() in the presence of a __getattr__().
|
customizing the output of dir() in the presence of a __getattr__().
|
||||||
|
@ -968,7 +968,7 @@ PyNumber_Float(PyObject *o)
|
|||||||
PyFloatObject *po = (PyFloatObject *)o;
|
PyFloatObject *po = (PyFloatObject *)o;
|
||||||
return PyFloat_FromDouble(po->ob_fval);
|
return PyFloat_FromDouble(po->ob_fval);
|
||||||
}
|
}
|
||||||
return PyFloat_FromString(o, NULL);
|
return PyFloat_FromString(o);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Operations on sequences */
|
/* Operations on sequences */
|
||||||
|
@ -62,24 +62,8 @@ PyFloat_FromDouble(double fval)
|
|||||||
return (PyObject *) op;
|
return (PyObject *) op;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**************************************************************************
|
|
||||||
RED_FLAG 22-Sep-2000 tim
|
|
||||||
PyFloat_FromString's pend argument is braindead. Prior to this RED_FLAG,
|
|
||||||
|
|
||||||
1. If v was a regular string, *pend was set to point to its terminating
|
|
||||||
null byte. That's useless (the caller can find that without any
|
|
||||||
help from this function!).
|
|
||||||
|
|
||||||
2. If v was a Unicode string, or an object convertible to a character
|
|
||||||
buffer, *pend was set to point into stack trash (the auto temp
|
|
||||||
vector holding the character buffer). That was downright dangerous.
|
|
||||||
|
|
||||||
Since we can't change the interface of a public API function, pend is
|
|
||||||
still supported but now *officially* useless: if pend is not NULL,
|
|
||||||
*pend is set to NULL.
|
|
||||||
**************************************************************************/
|
|
||||||
PyObject *
|
PyObject *
|
||||||
PyFloat_FromString(PyObject *v, char **pend)
|
PyFloat_FromString(PyObject *v)
|
||||||
{
|
{
|
||||||
const char *s, *last, *end;
|
const char *s, *last, *end;
|
||||||
double x;
|
double x;
|
||||||
@ -89,8 +73,6 @@ PyFloat_FromString(PyObject *v, char **pend)
|
|||||||
#endif
|
#endif
|
||||||
Py_ssize_t len;
|
Py_ssize_t len;
|
||||||
|
|
||||||
if (pend)
|
|
||||||
*pend = NULL;
|
|
||||||
if (PyString_Check(v)) {
|
if (PyString_Check(v)) {
|
||||||
s = PyString_AS_STRING(v);
|
s = PyString_AS_STRING(v);
|
||||||
len = PyString_GET_SIZE(v);
|
len = PyString_GET_SIZE(v);
|
||||||
@ -852,7 +834,7 @@ float_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
|||||||
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O:float", kwlist, &x))
|
if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O:float", kwlist, &x))
|
||||||
return NULL;
|
return NULL;
|
||||||
if (PyString_Check(x))
|
if (PyString_Check(x))
|
||||||
return PyFloat_FromString(x, NULL);
|
return PyFloat_FromString(x);
|
||||||
return PyNumber_Float(x);
|
return PyNumber_Float(x);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user