- char *p; \
- Py_ssize_t sz; \
- if (!PyArg_ParseTuple(arg, "s#:putblk" #w, &p, &sz)) goto end; \
- if (MASK##W && sz > MASK##W) VALERR("too large"); \
- ensure(me, sz + SZ_##n); \
- buf_putmem##w(BUF_B(me), p, sz); assert(BOK(BUF_B(me))); \
+ struct bin in; \
+ if (!PyArg_ParseTuple(arg, "O&:putblk" #w, convbin, &in)) goto end; \
+ if (MASK##W && in.sz > MASK##W) VALERR("too large"); \
+ ensure(me, in.sz + SZ_##n); \
+ buf_putmem##w(BUF_B(me), in.p, in.sz); assert(BOK(BUF_B(me))); \