Commit a19e36ee authored by Dag Sverre Seljebotn's avatar Dag Sverre Seljebotn

Buffers: Allow repeat count of 1 on single item format strings

parent acdacfe9
......@@ -450,6 +450,7 @@ def get_ts_check_item(dtype, writer):
if char is not None:
# Can use direct comparison
code = dedent("""\
if (*ts == '1') ++ts;
if (*ts != '%s') {
PyErr_Format(PyExc_ValueError, "Buffer datatype mismatch (rejecting on '%%s')", ts);
return NULL;
......@@ -461,6 +462,7 @@ def get_ts_check_item(dtype, writer):
ctype = dtype.declaration_code("")
code = dedent("""\
int ok;
if (*ts == '1') ++ts;
switch (*ts) {""", 2)
if dtype.is_int:
types = [
......
......@@ -944,14 +944,14 @@ cdef class ShortMockBuffer(MockBuffer):
(<short*>buf)[0] = <short>value
return 0
cdef get_itemsize(self): return sizeof(short)
cdef get_default_format(self): return "=h"
cdef get_default_format(self): return "h" # Try without endian specifier
cdef class UnsignedShortMockBuffer(MockBuffer):
cdef int write(self, char* buf, object value) except -1:
(<unsigned short*>buf)[0] = <unsigned short>value
return 0
cdef get_itemsize(self): return sizeof(unsigned short)
cdef get_default_format(self): return "=H"
cdef get_default_format(self): return "=1H" # Try with repeat count
cdef extern from *:
void* addr_of_pyobject "(void*)"(object)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment