Merged revisions 86159 via svnmerge from

svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r86159 | hirokazu.yamamoto | 2010-11-04 21:09:08 +0900 | 2 lines

  Issue #5391: mmap.read_byte() should return unsigned value [0, 255]
  instead of signed value [-127, 128].
........
This commit is contained in:
Hirokazu Yamamoto 2010-11-04 12:35:21 +00:00
parent fc5f381caa
commit 09ea792a94
2 changed files with 10 additions and 1 deletions

View File

@ -536,6 +536,15 @@ class MmapTests(unittest.TestCase):
m.seek(8)
self.assertRaises(ValueError, m.write, b"bar")
def test_non_ascii_byte(self):
for b in (129, 200, 255): # > 128
m = mmap.mmap(-1, 1)
m.write_byte(b)
self.assertEquals(m[0], b)
m.seek(0)
self.assertEquals(m.read_byte(), b)
m.close()
if os.name == 'nt':
def test_tagname(self):
data1 = b"0123456789"

View File

@ -205,7 +205,7 @@ mmap_read_byte_method(mmap_object *self,
if (self->pos < self->size) {
char value = self->data[self->pos];
self->pos += 1;
return Py_BuildValue("b", value);
return Py_BuildValue("B", (unsigned char)value);
} else {
PyErr_SetString(PyExc_ValueError, "read byte out of range");
return NULL;