Merge change 54909 from release25-maint: Fix several minor issues discovered using code analysis in VisualStudio 2005 Team Edition

This commit is contained in:
Kristján Valur Jónsson 2007-04-25 00:10:50 +00:00
parent e133a95d1c
commit 17b8e97e2e
6 changed files with 35 additions and 20 deletions

View file

@ -349,13 +349,17 @@ O_seek(Oobject *self, PyObject *args) {
}
if (position > self->buf_size) {
char *newbuf;
self->buf_size*=2;
if (self->buf_size <= position) self->buf_size=position+1;
self->buf = (char*) realloc(self->buf,self->buf_size);
if (!self->buf) {
newbuf = (char*) realloc(self->buf,self->buf_size);
if (!newbuf) {
free(self->buf);
self->buf = 0;
self->buf_size=self->pos=0;
return PyErr_NoMemory();
}
self->buf = newbuf;
}
else if (position < 0) position=0;
@ -376,6 +380,7 @@ static int
O_cwrite(PyObject *self, const char *c, Py_ssize_t l) {
Py_ssize_t newl;
Oobject *oself;
char *newbuf;
if (!IO__opencheck(IOOOBJECT(self))) return -1;
oself = (Oobject *)self;
@ -387,12 +392,15 @@ O_cwrite(PyObject *self, const char *c, Py_ssize_t l) {
assert(newl + 1 < INT_MAX);
oself->buf_size = (int)(newl+1);
}
oself->buf = (char*)realloc(oself->buf, oself->buf_size);
if (!oself->buf) {
newbuf = (char*)realloc(oself->buf, oself->buf_size);
if (!newbuf) {
PyErr_SetString(PyExc_MemoryError,"out of memory");
free(oself->buf);
oself->buf = 0;
oself->buf_size = oself->pos = 0;
return -1;
}
oself->buf = newbuf;
}
memcpy(oself->buf+oself->pos,c,l);