Remove the deprecated and useless "pend" argument from

PyFloat_FromString. (fixes bug #1650903)
This commit is contained in:
Georg Brandl 2007-03-18 18:35:15 +00:00
parent 9091e3a423
commit 428f0641ec
6 changed files with 10 additions and 29 deletions

View File

@ -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}

View File

@ -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:

View File

@ -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);

View File

@ -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__().

View File

@ -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 */

View File

@ -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);
} }