summaryrefslogtreecommitdiff
path: root/psycopg/microprotocols.c
diff options
context:
space:
mode:
authorDaniele Varrazzo <daniele.varrazzo@gmail.com>2010-11-08 00:39:00 +0000
committerDaniele Varrazzo <daniele.varrazzo@gmail.com>2010-11-08 01:28:01 +0000
commit225b276de5825cd4b0fa83faa66f0a4a9b3efd22 (patch)
tree1d25bfa4e7ae06b951c77c0d5ae055e6c6e82af6 /psycopg/microprotocols.c
parentdf05ea7a33adfee48a4f6f494b36d542befca684 (diff)
downloadpsycopg2-225b276de5825cd4b0fa83faa66f0a4a9b3efd22.tar.gz
Use faster function to build tuples in adaptation.
Fixed a refcount bug too.
Diffstat (limited to 'psycopg/microprotocols.c')
-rw-r--r--psycopg/microprotocols.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/psycopg/microprotocols.c b/psycopg/microprotocols.c
index 93bd11a..e080b7b 100644
--- a/psycopg/microprotocols.c
+++ b/psycopg/microprotocols.c
@@ -62,13 +62,16 @@ microprotocols_init(PyObject *dict)
int
microprotocols_add(PyTypeObject *type, PyObject *proto, PyObject *cast)
{
+ PyObject *key;
+
if (proto == NULL) proto = (PyObject*)&isqlquoteType;
Dprintf("microprotocols_add: cast %p for (%s, ?)", cast, type->tp_name);
- PyDict_SetItem(psyco_adapters,
- Py_BuildValue("(OO)", (PyObject*)type, proto),
- cast);
+ key = PyTuple_Pack(2, (PyObject*)type, proto);
+ PyDict_SetItem(psyco_adapters, key, cast);
+ Py_DECREF(key);
+
return 0;
}
@@ -92,7 +95,7 @@ microprotocols_adapt(PyObject *obj, PyObject *proto, PyObject *alt)
Dprintf("microprotocols_adapt: trying to adapt %s", obj->ob_type->tp_name);
/* look for an adapter in the registry */
- key = Py_BuildValue("(OO)", (PyObject*)obj->ob_type, proto);
+ key = PyTuple_Pack(2, Py_TYPE(obj), proto);
adapter = PyDict_GetItem(psyco_adapters, key);
Py_DECREF(key);
if (adapter) {