[pypy-commit] pypy default: null chars
fijal
noreply at buildbot.pypy.org
Tue May 13 11:32:05 CEST 2014
Author: Maciej Fijalkowski <fijall at gmail.com>
Branch:
Changeset: r71485:d334c17b0e39
Date: 2014-05-13 11:31 +0200
http://bitbucket.org/pypy/pypy/changeset/d334c17b0e39/
Log: null chars
diff --git a/lib-python/2.7/test/test_gdbm.py b/lib-python/2.7/test/test_gdbm.py
--- a/lib-python/2.7/test/test_gdbm.py
+++ b/lib-python/2.7/test/test_gdbm.py
@@ -87,6 +87,17 @@
self.g = gdbm.open(filename, 'r')
self.assertEquals(self.g['x'], 'x' * 10000)
+ def test_key_with_null_bytes(self):
+ key = 'a\x00b'
+ value = 'c\x00d'
+ self.g = gdbm.open(filename, 'cf')
+ self.g[key] = value
+ self.g.close()
+ self.g = gdbm.open(filename, 'r')
+ self.assertEquals(self.g[key], value)
+ self.assertTrue(key in self.g)
+ self.assertTrue(self.g.has_key(key))
+
def test_main():
run_unittest(TestGdbm)
diff --git a/lib_pypy/gdbm.py b/lib_pypy/gdbm.py
--- a/lib_pypy/gdbm.py
+++ b/lib_pypy/gdbm.py
@@ -90,7 +90,7 @@
drec = lib.gdbm_fetch(self.ll_dbm, _fromstr(key))
if not drec.dptr:
raise KeyError(key)
- res = ffi.string(drec.dptr, drec.dsize)
+ res = str(ffi.buffer(drec.dptr, drec.dsize))
lib.free(drec.dptr)
return res
@@ -99,7 +99,7 @@
l = []
key = lib.gdbm_firstkey(self.ll_dbm)
while key.dptr:
- l.append(ffi.string(key.dptr, key.dsize))
+ l.append(str(ffi.buffer(key.dptr, key.dsize)))
nextkey = lib.gdbm_nextkey(self.ll_dbm, key)
lib.free(key.dptr)
key = nextkey
@@ -109,7 +109,7 @@
self._check_closed()
key = lib.gdbm_firstkey(self.ll_dbm)
if key.dptr:
- res = ffi.string(key.dptr, key.dsize)
+ res = str(ffi.buffer(key.dptr, key.dsize))
lib.free(key.dptr)
return res
@@ -117,7 +117,7 @@
self._check_closed()
key = lib.gdbm_nextkey(self.ll_dbm, _fromstr(key))
if key.dptr:
- res = ffi.string(key.dptr, key.dsize)
+ res = str(ffi.buffer(key.dptr, key.dsize))
lib.free(key.dptr)
return res
More information about the pypy-commit
mailing list