Index: Modules/_ctypes/_ctypes.c =================================================================== --- Modules/_ctypes/_ctypes.c (revision 84232) +++ Modules/_ctypes/_ctypes.c (working copy) @@ -2461,8 +2461,10 @@ view->ndim = dict->ndim; view->shape = dict->shape; view->itemsize = self->b_size; - for (i = 0; i < view->ndim; ++i) { - view->itemsize /= dict->shape[i]; + if (view->itemsize) { + for (i = 0; i < view->ndim; ++i) { + view->itemsize /= dict->shape[i]; + } } view->strides = NULL; view->suboffsets = NULL; Index: Lib/ctypes/test/test_buffers.py =================================================================== --- Lib/ctypes/test/test_buffers.py (revision 84232) +++ Lib/ctypes/test/test_buffers.py (working copy) @@ -20,6 +20,10 @@ self.assertEqual(b[::2], b"ac") self.assertEqual(b[::5], b"a") + def test_buffer_interface(self): + self.assertEqual(len(bytearray(create_string_buffer(0))), 0) + self.assertEqual(len(bytearray(create_string_buffer(1))), 1) + try: c_wchar except NameError: