homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author pitrou
Recipients Ramchandra Apte, mark.dickinson, neologix, phillies, pitrou, vstinner
Date 2011年12月17日.22:25:28
SpamBayes Score 1.0700343e-07
Marked as misclassified No
Message-id <1324160729.5.0.326221700697.issue13555@psf.upfronthosting.co.za>
In-reply-to
Content
I think there's a problem here:
+ self->data = realloc(self->data, self->size * sizeof(PyObject *));
+ if (self->data == NULL)
 goto nomemory;
If realloc() fails, the old data pointer is lost and therefore will never get free()ed.
Same for:
+ self->buf = (char *)realloc(self->buf, self->buf_size);
Here:
- int *marks;
- s=self->marks_size+20;
- if (s <= self->num_marks) s=self->num_marks + 1;
+ size_t alloc;
+ Py_ssize_t *marks;
+
+ /* Use the size_t type to check for overflow. */
+ alloc = ((size_t)self->num_marks << 1) + 20;
It seems you are changing the overallocation algorithm (from additive to multiplicative). I'm not sure it should be in the scope of the patch, although multiplicative overallocation is generally better.
History
Date User Action Args
2011年12月17日 22:25:29pitrousetrecipients: + pitrou, mark.dickinson, vstinner, neologix, Ramchandra Apte, phillies
2011年12月17日 22:25:29pitrousetmessageid: <1324160729.5.0.326221700697.issue13555@psf.upfronthosting.co.za>
2011年12月17日 22:25:28pitroulinkissue13555 messages
2011年12月17日 22:25:28pitroucreate

AltStyle によって変換されたページ (->オリジナル) /