chiark
/
gitweb
/
~mdw
/
catacomb-python
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mp.c: Fix Jacobi symbol notation in docstring.
[catacomb-python]
/
buffer.c
diff --git
a/buffer.c
b/buffer.c
index 43bf02de7647989b3d91b5fd48d47dc2d3b8ab5a..7360d0bc546ee5d613fd19945dc08ac34ad8c50d 100644
(file)
--- a/
buffer.c
+++ b/
buffer.c
@@
-112,7
+112,8
@@
end:
uint##n x; \
if (!PyArg_ParseTuple(arg, ":getu" #w)) goto end; \
if (buf_getu##w(BUF_B(me), &x)) BUFERR(); \
uint##n x; \
if (!PyArg_ParseTuple(arg, ":getu" #w)) goto end; \
if (buf_getu##w(BUF_B(me), &x)) BUFERR(); \
- return (getulong(x)); \
+ if (MASK##W <= ULONG_MAX) return (getulong(x)); \
+ else { kludge64 y; ASSIGN64(y, x); return (getk64(y)); } \
end: \
return (0); \
}
end: \
return (0); \
}
@@
-261,10
+262,10
@@
static PyMethodDef rbuf_pymethods[] = {
METH(getu##w, "RBUF.getu" #w "() -> INT")
DOUINTCONV(RBMETH_DECL_GETU_)
#define RBMETH_DECL_GETBLK_(n, W, w) \
METH(getu##w, "RBUF.getu" #w "() -> INT")
DOUINTCONV(RBMETH_DECL_GETU_)
#define RBMETH_DECL_GETBLK_(n, W, w) \
- METH(getblk##w, "RBUF.getblk" #w "() ->
INT
")
+ METH(getblk##w, "RBUF.getblk" #w "() ->
BYTES
")
BUF_DOSUFFIXES(RBMETH_DECL_GETBLK_)
#define RBMETH_DECL_GETBUF_(n, W, w) \
BUF_DOSUFFIXES(RBMETH_DECL_GETBLK_)
#define RBMETH_DECL_GETBUF_(n, W, w) \
- METH(getbuf##w, "RBUF.getbuf" #w "() ->
INT
")
+ METH(getbuf##w, "RBUF.getbuf" #w "() ->
RBUF'
")
BUF_DOSUFFIXES(RBMETH_DECL_GETBUF_)
METH (getmp, "RBUF.getmp() -> X")
METH (getgf, "RBUF.getgf() -> X")
BUF_DOSUFFIXES(RBMETH_DECL_GETBUF_)
METH (getmp, "RBUF.getmp() -> X")
METH (getgf, "RBUF.getgf() -> X")
@@
-390,7
+391,7
@@
static PyObject *wbmeth_put(PyObject *me, PyObject *arg)
Py_ssize_t n;
if (!PyArg_ParseTuple(arg, "s#:put", &p, &n)) return (0);
ensure(me, n);
Py_ssize_t n;
if (!PyArg_ParseTuple(arg, "s#:put", &p, &n)) return (0);
ensure(me, n);
- buf_put(BUF_B(me), p, n); assert(BOK(BUF_B(m)));
+ buf_put(BUF_B(me), p, n); assert(BOK(BUF_B(m
e
)));
RETURN_ME;
}
RETURN_ME;
}
@@
-405,16
+406,20
@@
static PyObject *wbmeth_put(PyObject *me, PyObject *arg)
}
DOUINTCONV(WBMETH_PUTU_)
}
DOUINTCONV(WBMETH_PUTU_)
+#define MASKz 0
#define SZ_z 1
#define WBMETH_PUTBLK_(n, W, w) \
static PyObject *wbmeth_putblk##w(PyObject *me, PyObject *arg) \
{ \
char *p; \
Py_ssize_t sz; \
#define SZ_z 1
#define WBMETH_PUTBLK_(n, W, w) \
static PyObject *wbmeth_putblk##w(PyObject *me, PyObject *arg) \
{ \
char *p; \
Py_ssize_t sz; \
- if (!PyArg_ParseTuple(arg, "s#:putblk" #w, &p, &sz)) return (0); \
+ 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))); \
RETURN_ME; \
ensure(me, sz + SZ_##n); \
buf_putmem##w(BUF_B(me), p, sz); assert(BOK(BUF_B(me))); \
RETURN_ME; \
+ end: \
+ return (0); \
}
BUF_DOSUFFIXES(WBMETH_PUTBLK_)
}
BUF_DOSUFFIXES(WBMETH_PUTBLK_)
@@
-501,7
+506,7
@@
static PyMethodDef wbuf_pymethods[] = {
BUF_DOSUFFIXES(WBMETH_DECL_PUTBLK_)
METH (putmp, "WBUF.putmp(X)")
METH (putgf, "WBUF.putgf(X)")
BUF_DOSUFFIXES(WBMETH_DECL_PUTBLK_)
METH (putmp, "WBUF.putmp(X)")
METH (putgf, "WBUF.putgf(X)")
-
KWMETH(putecpt,
"WBUF.putecpt(P)")
+
METH (putecpt,
"WBUF.putecpt(P)")
METH (putecptraw, "WBUF.putecptraw(P)")
METH (putge, "WBUF.putge(X)")
METH (putgeraw, "WBUF.putgeraw(X)")
METH (putecptraw, "WBUF.putecptraw(P)")
METH (putge, "WBUF.putge(X)")
METH (putgeraw, "WBUF.putgeraw(X)")