The branch, master has been updated via 33a57db s4-pydsdb: Use local memory context in py_dsdb_get_oid_from_attid() from e1d3de3 dnspython: Merge in new upstream.
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 33a57db3a542c364eb82499e5765a2caef00af33 Author: Kamen Mazdrashki <kame...@samba.org> Date: Mon Dec 20 11:39:26 2010 +0200 s4-pydsdb: Use local memory context in py_dsdb_get_oid_from_attid() This version reverts changes from commit b974966cc2b4d0b5b0d83206070b5f7c5c6495d1 and is what Matthieu Patou had commited in d784ecec555a3d9737e6f4b3894f27904d2b833c with added reference to the schema cache. I think referencing schema here is the right thing to be done as thus we garantee that schema cache will stay in memory for the time our function is executed Autobuild-User: Kamen Mazdrashki <kame...@samba.org> Autobuild-Date: Mon Dec 20 12:01:53 CET 2010 on sn-devel-104 ----------------------------------------------------------------------- Summary of changes: source4/dsdb/pydsdb.c | 20 ++++++++++++++++---- 1 files changed, 16 insertions(+), 4 deletions(-) Changeset truncated at 500 lines: diff --git a/source4/dsdb/pydsdb.c b/source4/dsdb/pydsdb.c index af03504..1a51b86 100644 --- a/source4/dsdb/pydsdb.c +++ b/source4/dsdb/pydsdb.c @@ -249,25 +249,37 @@ static PyObject *py_dsdb_get_oid_from_attid(PyObject *self, PyObject *args) const char *oid; PyObject *ret; WERROR status; + TALLOC_CTX *mem_ctx; if (!PyArg_ParseTuple(args, "Oi", &py_ldb, &attid)) return NULL; PyErr_LDB_OR_RAISE(py_ldb, ldb); - schema = dsdb_get_schema(ldb, NULL); + mem_ctx = talloc_new(NULL); + if (!mem_ctx) { + PyErr_NoMemory(); + return NULL; + } + schema = dsdb_get_schema(ldb, mem_ctx); if (!schema) { PyErr_SetString(PyExc_RuntimeError, "Failed to find a schema from ldb \n"); + talloc_free(mem_ctx); return NULL; } status = dsdb_schema_pfm_oid_from_attid(schema->prefixmap, attid, - NULL, &oid); - PyErr_WERROR_IS_ERR_RAISE(status); + mem_ctx, &oid); + if (!W_ERROR_IS_OK(status)) { + PyErr_SetWERROR(status); + talloc_free(mem_ctx); + return NULL; + } ret = PyString_FromString(oid); - talloc_free(discard_const_p(char, oid)); + + talloc_free(mem_ctx); return ret; } -- Samba Shared Repository