summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Harris <charlesr.harris@gmail.com>2008-07-12 06:26:40 +0000
committerCharles Harris <charlesr.harris@gmail.com>2008-07-12 06:26:40 +0000
commitd7717dde37f20925b1ee4f1494c0c4ccea385d59 (patch)
tree00a3bd8fc07308f8769a62dcfaed65f3b85273f1
parentb81c073daf1f5d45441b30b6a792a8348f6a572f (diff)
downloadnumpy-d7717dde37f20925b1ee4f1494c0c4ccea385d59.tar.gz
Make buffers local for reentrancy.
-rw-r--r--numpy/core/src/scalartypes.inc.src24
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);
}