]> granicus.if.org Git - python/commitdiff
The dbm module should use bytes for keys. This makes test_shelve pass.
authorGuido van Rossum <guido@python.org>
Tue, 14 Aug 2007 15:42:45 +0000 (15:42 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 14 Aug 2007 15:42:45 +0000 (15:42 +0000)
Lib/test/test_dbm.py
Modules/dbmmodule.c

index ebe37b4ae53cba71562b609ca5f3236733ade7d3..88b0bf6cc7ba322f390fdbe036aa48fd3a043f81 100755 (executable)
@@ -26,10 +26,10 @@ def cleanup():
 def test_keys():
     d = dbm.open(filename, 'c')
     verify(d.keys() == [])
-    d['a'] = 'b'
-    d['12345678910'] = '019237410982340912840198242'
+    d[b'a'] = b'b'
+    d[b'12345678910'] = b'019237410982340912840198242'
     d.keys()
-    if 'a' in d:
+    if b'a' in d:
         if verbose:
             print('Test dbm keys: ', d.keys())
 
index a6c9e9978b46cbc61c47b09e98f6305d822e3a3f..5660882af1f0e447e5766a6f91488ace14439405 100644 (file)
@@ -188,7 +188,7 @@ dbm_keys(register dbmobject *dp, PyObject *unused)
                return NULL;
        for (key = dbm_firstkey(dp->di_dbm); key.dptr;
             key = dbm_nextkey(dp->di_dbm)) {
-               item = PyString_FromStringAndSize(key.dptr, key.dsize);
+               item = PyBytes_FromStringAndSize(key.dptr, key.dsize);
                if (item == NULL) {
                        Py_DECREF(v);
                        return NULL;
@@ -219,14 +219,14 @@ dbm_contains(PyObject *self, PyObject *arg)
                if (arg == NULL)
                        return -1;
        }
-       if (!PyString_Check(arg)) {
+       if (!PyBytes_Check(arg)) {
                PyErr_Format(PyExc_TypeError,
                             "dbm key must be string, not %.100s",
                             arg->ob_type->tp_name);
                return -1;
        }
-       key.dptr = PyString_AS_STRING(arg);
-       key.dsize = PyString_GET_SIZE(arg);
+       key.dptr = PyBytes_AS_STRING(arg);
+       key.dsize = PyBytes_GET_SIZE(arg);
        val = dbm_fetch(dp->di_dbm, key);
        return val.dptr != NULL;
 }
@@ -395,7 +395,7 @@ initdbm(void) {
        d = PyModule_GetDict(m);
        if (DbmError == NULL)
                DbmError = PyErr_NewException("dbm.error", NULL, NULL);
-       s = PyString_FromString(which_dbm);
+       s = PyUnicode_FromString(which_dbm);
        if (s != NULL) {
                PyDict_SetItemString(d, "library", s);
                Py_DECREF(s);