Check if the object wrapped in binary is not None before trying the other types

Otherwise it seems we clobber some result with NULL.
This commit is contained in:
Daniele Varrazzo 2012-03-05 02:08:45 +00:00
parent a9dc1b83ad
commit 735d50c782

View File

@ -65,6 +65,13 @@ binary_quote(binaryObject *self)
int got_view = 0;
#endif
/* Allow Binary(None) to work */
if (self->wrapped == Py_None) {
Py_INCREF(psyco_null);
rv = psyco_null;
goto exit;
}
/* if we got a plain string or a buffer we escape it and save the buffer */
#if HAS_MEMORYVIEW
@ -93,7 +100,7 @@ binary_quote(binaryObject *self)
/* escape and build quoted buffer */
to = (char *)binary_escape((unsigned char*)buffer, (size_t) buffer_len,
to = (char *)binary_escape((unsigned char*)buffer, (size_t)buffer_len,
&len, self->conn ? ((connectionObject*)self->conn)->pgconn : NULL);
if (to == NULL) {
PyErr_NoMemory();
@ -113,12 +120,6 @@ exit:
if (got_view) { PyBuffer_Release(&view); }
#endif
/* Allow Binary(None) to work */
if (self->wrapped == Py_None) {
Py_INCREF(psyco_null);
rv = psyco_null;
}
/* if the wrapped object is not bytes or a buffer, this is an error */
if (!rv && !PyErr_Occurred()) {
PyErr_Format(PyExc_TypeError, "can't escape %s to binary",