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

Reply via email to