[Python-checkins] r54663 - in python/trunk: Lib/test/test_re.py Modules/arraymodule.c
raymond.hettinger
python-checkins at python.org
Tue Apr 3 00:54:22 CEST 2007
Author: raymond.hettinger
Date: Tue Apr 3 00:54:21 2007
New Revision: 54663
Modified:
python/trunk/Lib/test/test_re.py
python/trunk/Modules/arraymodule.c
Log:
Array module's buffer interface can now handle empty arrays.
Modified: python/trunk/Lib/test/test_re.py
==============================================================================
--- python/trunk/Lib/test/test_re.py (original)
+++ python/trunk/Lib/test/test_re.py Tue Apr 3 00:54:21 2007
@@ -601,6 +601,13 @@
self.assertEqual(iter.next().span(), (4, 4))
self.assertRaises(StopIteration, iter.next)
+ def test_empty_array(self):
+ # SF buf 1647541
+ import array
+ for typecode in 'cbBuhHiIlLfd':
+ a = array.array(typecode)
+ self.assertEqual(re.compile("bla").match(a), None)
+ self.assertEqual(re.compile("").match(a).groups(), ())
def run_re_tests():
from test.re_tests import benchmarks, tests, SUCCEED, FAIL, SYNTAX_ERROR
Modified: python/trunk/Modules/arraymodule.c
==============================================================================
--- python/trunk/Modules/arraymodule.c (original)
+++ python/trunk/Modules/arraymodule.c Tue Apr 3 00:54:21 2007
@@ -1745,6 +1745,8 @@
(objobjargproc)array_ass_subscr
};
+static const void *emptybuf = "";
+
static Py_ssize_t
array_buffer_getreadbuf(arrayobject *self, Py_ssize_t index, const void **ptr)
{
@@ -1754,6 +1756,8 @@
return -1;
}
*ptr = (void *)self->ob_item;
+ if (*ptr == NULL)
+ *ptr = emptybuf;
return self->ob_size*self->ob_descr->itemsize;
}
@@ -1766,6 +1770,8 @@
return -1;
}
*ptr = (void *)self->ob_item;
+ if (*ptr == NULL)
+ *ptr = emptybuf;
return self->ob_size*self->ob_descr->itemsize;
}
More information about the Python-checkins
mailing list