diff options
author | Charles Harris <charlesr.harris@gmail.com> | 2008-07-12 06:26:40 +0000 |
---|---|---|
committer | Charles Harris <charlesr.harris@gmail.com> | 2008-07-12 06:26:40 +0000 |
commit | d7717dde37f20925b1ee4f1494c0c4ccea385d59 (patch) | |
tree | 00a3bd8fc07308f8769a62dcfaed65f3b85273f1 | |
parent | b81c073daf1f5d45441b30b6a792a8348f6a572f (diff) | |
download | numpy-d7717dde37f20925b1ee4f1494c0c4ccea385d59.tar.gz |
Make buffers local for reentrancy.
-rw-r--r-- | numpy/core/src/scalartypes.inc.src | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/numpy/core/src/scalartypes.inc.src b/numpy/core/src/scalartypes.inc.src index ae9c6190f..d1af4d823 100644 --- a/numpy/core/src/scalartypes.inc.src +++ b/numpy/core/src/scalartypes.inc.src @@ -553,7 +553,9 @@ gentype_repr(PyObject *self) /**begin repeat * #name=float, double, longdouble# * #NAME=FLOAT, DOUBLE, LONGDOUBLE# - * #PREFIX=NPY_,NPY_,NPY_# + * #PREFIX=NPY_, NPY_, NPY_# + * + * Fixme: buflen isn't checked when appending .0 */ static void format_@name@(char *buf, size_t buflen, @name@ val, @@ -625,6 +627,8 @@ static PyObject * /* * float type str and repr + * + * These functions will return NULL if PyString creation fails. */ /**begin repeat * #name=float, double, longdouble# @@ -638,23 +642,23 @@ static PyObject * static PyObject * @name@type_@kind@(PyObject *self) { - static char buf[100]; - @name@ x = ((Py@Name@ScalarObject *)self)->obval; + char buf[100]; + @name@ val = ((Py@Name@ScalarObject *)self)->obval; - format_@name@(buf, sizeof(buf), x, @NAME@PREC_@KIND@); + format_@name@(buf, sizeof(buf), val, @NAME@PREC_@KIND@); return PyString_FromString(buf); } static PyObject * c@name@type_@kind@(PyObject *self) { - static char buf1[100]; - static char buf2[100]; - static char buf3[202]; - c@name@ x = ((PyC@Name@ScalarObject *)self)->obval; + char buf1[100]; + char buf2[100]; + char buf3[202]; + c@name@ val = ((PyC@Name@ScalarObject *)self)->obval; - format_@name@(buf1, sizeof(buf1), x.real, @NAME@PREC_@KIND@); - format_@name@(buf2, sizeof(buf2), x.imag, @NAME@PREC_@KIND@); + format_@name@(buf1, sizeof(buf1), val.real, @NAME@PREC_@KIND@); + format_@name@(buf2, sizeof(buf2), val.imag, @NAME@PREC_@KIND@); snprintf(buf3, sizeof(buf3), "(%s+%sj)", buf1, buf2); return PyString_FromString(buf3); } |