[SCM] Samba Shared Repository - branch master updated

Kamen Mazdrashki kamenim at samba.org
Mon Dec 20 04:02:02 MST 2010


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 <kamenim at 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 <kamenim at 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


More information about the samba-cvs mailing list