diff options
| author | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2010-11-08 00:39:00 +0000 |
|---|---|---|
| committer | Daniele Varrazzo <daniele.varrazzo@gmail.com> | 2010-11-08 01:28:01 +0000 |
| commit | 225b276de5825cd4b0fa83faa66f0a4a9b3efd22 (patch) | |
| tree | 1d25bfa4e7ae06b951c77c0d5ae055e6c6e82af6 /psycopg/microprotocols.c | |
| parent | df05ea7a33adfee48a4f6f494b36d542befca684 (diff) | |
| download | psycopg2-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.c | 11 |
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) { |
