s4-pyldb: Use ldb_msg_diff_ex() in py_ldb_msg_diff()
authorKamen Mazdrashki <kamenim@samba.org>
Fri, 9 Jul 2010 03:38:11 +0000 (06:38 +0300)
committerKamen Mazdrashki <kamenim@samba.org>
Sat, 10 Jul 2010 20:03:13 +0000 (23:03 +0300)
source4/lib/ldb/pyldb.c

index b886a4b81c8af31053de064461ecd6f8dc1824ce..925ea5232aaf833be2475266ac2eabe851d73e5e 100644 (file)
@@ -1035,9 +1035,11 @@ static PyObject *py_ldb_parse_ldif(PyLdbObject *self, PyObject *args)
 
 static PyObject *py_ldb_msg_diff(PyLdbObject *self, PyObject *args)
 {
+       int ldb_ret;
        PyObject *py_msg_old;
        PyObject *py_msg_new;
        struct ldb_message *diff;
+       struct ldb_context *ldb;
        PyObject *py_ret;
 
        if (!PyArg_ParseTuple(args, "OO", &py_msg_old, &py_msg_new))
@@ -1053,14 +1055,20 @@ static PyObject *py_ldb_msg_diff(PyLdbObject *self, PyObject *args)
                return NULL;
        }
 
-       diff = ldb_msg_diff(PyLdb_AsLdbContext(self), PyLdbMessage_AsMessage(py_msg_old), PyLdbMessage_AsMessage(py_msg_new));
-       if (!diff) {
+       ldb = PyLdb_AsLdbContext(self);
+       ldb_ret = ldb_msg_diff_ex(ldb,
+                                 PyLdbMessage_AsMessage(py_msg_old),
+                                 PyLdbMessage_AsMessage(py_msg_new),
+                                 (TALLOC_CTX*)ldb, &diff);
+       if (ldb_ret != LDB_SUCCESS) {
                PyErr_SetString(PyExc_RuntimeError, "Failed to generate the Ldb Message diff");
                return NULL;
        }
 
        py_ret = PyLdbMessage_FromMessage(diff);
 
+       talloc_unlink(ldb, diff);
+
        return py_ret;
 }