chiark / gitweb /
Bug squashing.
[catacomb-python] / buffer.c
index 8e4ece55ffda821835914e8d071e59cd74b18d45..7456a3dad85c6404c234435ba82add4396840daa 100644 (file)
--- a/buffer.c
+++ b/buffer.c
@@ -83,7 +83,7 @@ static int rbuf_pysegcount(PyObject *me, int *nn)
   { if (nn) *nn = BSZ(BUF_B(me)); return (1); }
 
 static int rbuf_pyreadbuf(PyObject *me, int seg, void **q)
   { if (nn) *nn = BSZ(BUF_B(me)); return (1); }
 
 static int rbuf_pyreadbuf(PyObject *me, int seg, void **q)
-  { assert(seg == 0); *q = BBASE(BUF_B(me)); return (BSZ(BUF_B(me))); }
+  { assert(seg == 0); *q = BCUR(BUF_B(me)); return (BLEFT(BUF_B(me))); }
 
 static PyObject *rbmeth_skip(PyObject *me, PyObject *arg)
 {
 
 static PyObject *rbmeth_skip(PyObject *me, PyObject *arg)
 {
@@ -236,6 +236,7 @@ static PyObject *rbget_offset(PyObject *me, void *hunoz)
 static int rbset_offset(PyObject *me, PyObject *x, void *hunoz)
 {
   size_t n;
 static int rbset_offset(PyObject *me, PyObject *x, void *hunoz)
 {
   size_t n;
+  if (!x) NIERR("__del__");
   if (!convszt(x, &n)) goto end;
   if (n > BSZ(BUF_B(me))) VALERR("out of range");
   BCUR(BUF_B(me)) = BBASE(BUF_B(me)) + n;
   if (!convszt(x, &n)) goto end;
   if (n > BSZ(BUF_B(me))) VALERR("out of range");
   BCUR(BUF_B(me)) = BBASE(BUF_B(me)) + n;