File: cursor_put_pyparse.diff

package info (click to toggle)
py-lmdb 1.4.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,832 kB
  • sloc: ansic: 11,932; python: 4,646; makefile: 128
file content (31 lines) | stat: -rw-r--r-- 1,028 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
diff --git a/lmdb/cpython.c b/lmdb/cpython.c
index dd1c8b9..ced5ea3 100644
--- a/lmdb/cpython.c
+++ b/lmdb/cpython.c
@@ -2319,11 +2319,25 @@ cursor_put(CursorObject *self, PyObject *args, PyObject *kwds)
         {ARG_BOOL, OVERWRITE_S, OFFSET(cursor_put, overwrite)},
         {ARG_BOOL, APPEND_S, OFFSET(cursor_put, append)}
     };
+    static char *keywords[] = {
+        "key", "value", "dupdata", "overwrite", "append", NULL
+    };
+    PyObject *key, *val;
     int flags;
     int rc;
 
     static PyObject *cache = NULL;
-    if(parse_args(self->valid, SPECSIZE(), argspec, &cache, args, kwds, &arg)) {
+    if(! self->valid) {
+        return err_invalid();
+    }
+    if(! PyArg_ParseTupleAndKeywords(args, kwds, "OO|iii", keywords,
+                                     &key, &val, &arg.dupdata, &arg.overwrite,
+                                     &arg.append)) {
+        return NULL;
+    }
+
+    if(val_from_buffer(&arg.key, key) ||
+       val_from_buffer(&arg.val, val)) {
         return NULL;
     }