diff options
| author | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2010-12-25 12:03:15 +0100 |
|---|---|---|
| committer | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2010-12-31 03:18:27 +0100 |
| commit | 3214c23f51c8effa7e78f9a7f59735c5b3e10868 (patch) | |
| tree | e11d356c8ee4a70c7ab80cd6dbebe1b943a87693 /psycopg/adapter_pfloat.c | |
| parent | 2e22eef727fc3b57e63c7a6a1b5cbae9533cd632 (diff) | |
| download | psycopg2-3214c23f51c8effa7e78f9a7f59735c5b3e10868.tar.gz | |
Fixed adaptation in several adapters.
The getquoted methods always return bytes. The str() convert this
representation to string on the fly.
Diffstat (limited to 'psycopg/adapter_pfloat.c')
| -rw-r--r-- | psycopg/adapter_pfloat.c | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/psycopg/adapter_pfloat.c b/psycopg/adapter_pfloat.c index 3260d2c..2753737 100644 --- a/psycopg/adapter_pfloat.c +++ b/psycopg/adapter_pfloat.c @@ -36,21 +36,34 @@ /** the Float object **/ static PyObject * -pfloat_str(pfloatObject *self) +pfloat_getquoted(pfloatObject *self, PyObject *args) { + PyObject *rv; double n = PyFloat_AsDouble(self->wrapped); if (isnan(n)) - return Text_FromUTF8("'NaN'::float"); + rv = Bytes_FromString("'NaN'::float"); else if (isinf(n)) - return Text_FromUTF8("'Infinity'::float"); - else - return PyObject_Repr(self->wrapped); + rv = Bytes_FromString("'Infinity'::float"); + else { + rv = PyObject_Repr(self->wrapped); + +#if PY_MAJOR_VERSION > 2 + /* unicode to bytes in Py3 */ + if (rv) { + PyObject *tmp = PyUnicode_AsUTF8String(rv); + Py_DECREF(rv); + rv = tmp; + } +#endif + } + + return rv; } static PyObject * -pfloat_getquoted(pfloatObject *self, PyObject *args) +pfloat_str(pfloatObject *self) { - return pfloat_str(self); + return psycopg_ensure_text(pfloat_getquoted(self, NULL)); } static PyObject * |
