From d72f605a67eee8b062ff44487c49c67f0b740f55 Mon Sep 17 00:00:00 2001 From: adustman Date: Sat, 28 Apr 2001 00:39:06 +0000 Subject: [PATCH] Calls to _mysql__fetch_row() might move the row tuple, so use a PyObject **. Thanks to Andy Martin for finding this. --- mysql/_mysqlmodule.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/mysql/_mysqlmodule.c b/mysql/_mysqlmodule.c index 1f6c88d..95c790b 100644 --- a/mysql/_mysqlmodule.c +++ b/mysql/_mysqlmodule.c @@ -745,7 +745,7 @@ typedef PyObject *_PYFUNC(_mysql_ResultObject *, MYSQL_ROW); int _mysql__fetch_row( _mysql_ResultObject *self, - PyObject *r, + PyObject **r, int skiprows, int maxrows, _PYFUNC *convert_row) @@ -767,12 +767,12 @@ _mysql__fetch_row( goto error; } if (!row) { - if (_PyTuple_Resize(&r, i, 0) == -1) goto error; + if (_PyTuple_Resize(r, i, 0) == -1) goto error; break; } v = convert_row(self, row); if (!v) goto error; - PyTuple_SET_ITEM(r, i, v); + PyTuple_SET_ITEM(*r, i, v); } return i-skiprows; error: @@ -808,7 +808,7 @@ _mysql_ResultObject_fetch_row( convert_row = row_converters[how]; if (maxrows) { if (!(r = PyTuple_New(maxrows))) goto error; - rowsadded = _mysql__fetch_row(self, r, skiprows, maxrows, + rowsadded = _mysql__fetch_row(self, &r, skiprows, maxrows, convert_row); if (rowsadded == -1) goto error; } else { @@ -816,7 +816,7 @@ _mysql_ResultObject_fetch_row( maxrows = 1000; if (!(r = PyTuple_New(maxrows))) goto error; while (1) { - rowsadded = _mysql__fetch_row(self, r, skiprows, + rowsadded = _mysql__fetch_row(self, &r, skiprows, maxrows, convert_row); if (rowsadded == -1) goto error; skiprows += rowsadded; @@ -826,7 +826,7 @@ _mysql_ResultObject_fetch_row( /* XXX if overflow, maxrows<0? */ maxrows = (int) mysql_num_rows(self->result); if (!(r = PyTuple_New(maxrows))) goto error; - rowsadded = _mysql__fetch_row(self, r, 0, + rowsadded = _mysql__fetch_row(self, &r, 0, maxrows, convert_row); if (rowsadded == -1) goto error; }