File: py3-port.patch

package info (click to toggle)
odb-api 0.18.1-5
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 26,452 kB
  • sloc: cpp: 115,083; ansic: 86,859; f90: 30,318; sql: 12,508; sh: 9,939; yacc: 3,680; python: 2,432; lex: 1,593; perl: 1,116; fortran: 341; csh: 214; makefile: 111; lisp: 17
file content (70 lines) | stat: -rw-r--r-- 2,119 bytes parent folder | download
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Description: Changes needed for Python3
Author: Alastair McKinstry <mckinstry@debian.org>
Last-Updated: 2018-07-02
Forwarded: no

Index: odb-api-0.18.0/odb_api/src/odb_api/IteratorProxy.h
===================================================================
--- odb-api-0.18.0.orig/odb_api/src/odb_api/IteratorProxy.h
+++ odb-api-0.18.0/odb_api/src/odb_api/IteratorProxy.h
@@ -189,7 +189,7 @@ public:
 			size_t j = 0;
 			for (; j < sizeof(double) && s[j]; ++j)
 				; 
-			return PyString_FromStringAndSize(s, j);
+			return PyUnicode_FromStringAndSize(s, j);
 		}
 		case INTEGER: return PyLong_FromDouble(d);
 		case BITFIELD:
@@ -207,7 +207,7 @@ public:
 				mask >>= 1;
 			}
 			buf[sizeof(B)] = 0;
-			return PyString_FromStringAndSize(buf, sizeof(B) + 1);
+			return PyUnicode_FromStringAndSize(buf, sizeof(B) + 1);
 		}
 		default: return PyFloat_FromDouble(d);
 		}
@@ -238,27 +238,36 @@ public:
 			}
 			return l;
 		}
-		if (PyString_Check(i))
+		if (PyUnicode_Check(i))
 		{
 			//cerr << "__getitem__: start: PyString " << PyString_AsString(PyObject_Repr(i)) << std::endl;
-			return getitem(PyString_AsString(i));
+			return PyUnicode_AsUTF8String(i);
 		}
 		if (PySlice_Check(i))
 		{
 			//cerr << "__getitem__: we've got a PySliceObject here: ";
-			return getslice((PySliceObject*) i);
+			return getslice(i);
 		}
 
 		long li = PyLong_AsLong(i);
 		return getitem(li);
 	}
 
-	PyObject* getslice(PySliceObject* slice)
+	PyObject* getslice(PyObject* slice)
 	{
 		//cerr << "__getslice__(PySliceObject*):" << std::endl;
+	        PySliceObject *sl;
 		Py_ssize_t start = 0, stop = 0, step = 0, slicelength = 0;
-		PySlice_GetIndicesEx(slice, __len__(), &start, &stop, &step, &slicelength);
-		
+
+#ifdef Py_LIMITED_API
+		if (PySlice_Unpack(slice, start, stop, step) < 0) 
+		  slicelen = 0;                                         
+		else
+		  slicelen = PySlice_AdjustIndices(__len__(), *start, *stop, step);
+#else
+		sl = (PySliceObject *) slice;
+		PySlice_GetIndicesEx(slice, __len__(), &start, &stop, &step, &slicelength);
+#endif	
 		return getslice(start, stop, step, slicelength);
 	}