[Python-checkins] r57163 - python/branches/alex-py3k/Modules/_stringiomodule.c

alexandre.vassalotti python-checkins at python.org
Fri Aug 17 23:11:51 CEST 2007


Author: alexandre.vassalotti
Date: Fri Aug 17 23:11:30 2007
New Revision: 57163
Modified:
 python/branches/alex-py3k/Modules/_stringiomodule.c
Log:
Change the return type of resize_buffer() to int.
Remove some unnecessary cruft in resize_buffer().
Add a check to see if PyMem_New() failed in StringIO_new().
Modified: python/branches/alex-py3k/Modules/_stringiomodule.c
==============================================================================
--- python/branches/alex-py3k/Modules/_stringiomodule.c	(original)
+++ python/branches/alex-py3k/Modules/_stringiomodule.c	Fri Aug 17 23:11:30 2007
@@ -45,8 +45,8 @@
 }
 
 /* Internal routine for changing the size of the buffer of StringIO
- objects. Returns the new buffer size, or -1 on error. */
-static Py_ssize_t
+ objects. Returns 0 on success, -1 otherwise. */
+static int
 resize_buffer(StringIOObject *self, Py_ssize_t new_size)
 {
 /* Here we doing some direct memory manipulation for speed and to keep the
@@ -59,13 +59,11 @@
 
 PyMem_Resize(self->buf, Py_UNICODE, self->buf_size);
 if (self->buf == NULL) {
- PyErr_SetString(PyExc_MemoryError, "Out of memory");
- PyMem_Del(self->buf);
- self->buf_size = self->pos = 0;
+ PyErr_NoMemory();
 return -1;
 }
 }
- return self->buf_size;
+ return 0;
 }
 
 /* Internal routine for writing a string of bytes to the buffer of a StringIO
@@ -407,6 +405,10 @@
 return NULL;
 
 self->buf = PyMem_New(Py_UNICODE, INIT_BUFSIZE);
+ if (self->buf == NULL) {
+ PyErr_NoMemory();
+ return NULL;
+ }
 
 /* These variables need to be initialized before attempting to write
 anything to the object. */


More information about the Python-checkins mailing list

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