diff options
author | Jacek Konieczny <jajcus@jajcus.net> | 2004-05-05 13:13:22 +0400 |
---|---|---|
committer | Jacek Konieczny <jajcus@jajcus.net> | 2004-05-05 13:13:22 +0400 |
commit | 53b1721c0070fdd50ddfc00c3d56f3b98a2e4a8d (patch) | |
tree | be8821fe8c53b4c81c5ca46f5906b8b36018a2a7 /ext | |
parent | 22743ad3ffbaac4b9a43056550c3e7f59097e805 (diff) |
- set exception string on memory allocation errors
- fix for 64-bit architectures: second argument for "s#" format in
PyArg_ParseTuple function must be "int", not "size_t"
Diffstat (limited to 'ext')
-rw-r--r-- | ext/xmlextra.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/ext/xmlextra.c b/ext/xmlextra.c index a1abb6c..e4b5f1b 100644 --- a/ext/xmlextra.c +++ b/ext/xmlextra.c @@ -1153,8 +1153,10 @@ char *buf; if (reader->doc) xmlFreeDoc(reader->doc); reader->doc=NULL; buf=PyMem_New(char,len+reader->document_start_len); - if (buf==NULL) + if (buf==NULL) { + PyErr_Format(MyError,"Out of memory? Couldn't allocate %d bytes in stream_end()",(int)(len+reader->document_start_len)); return -1; + } memcpy(buf,reader->document_start,reader->document_start_len); memcpy(buf+reader->document_start_len,reader->buffer,len); reader->doc=xmlParseMemory(buf,len+reader->document_start_len); @@ -1180,6 +1182,7 @@ static int append_to_current_stanza(PreparsingReaderObject *reader,int len){ reader->current_stanza_len); if (reader->current_stanza==NULL) { preparsing_reader_clear(reader); + PyErr_Format(MyError,"Out of memory? Couldn't allocate %d bytes in append_to_current_stanza()",(int)reader->current_stanza_len); return -1; } } @@ -1232,7 +1235,7 @@ xmlNodePtr stanza; static PyObject * preparsing_reader_feed(PyObject *self, PyObject *args) { PreparsingReaderObject *reader=(PreparsingReaderObject *)self; char *str; -size_t len; +int len; MarkupType mtype; int depth_change; @@ -1250,6 +1253,7 @@ int depth_change; if (reader->buffer==NULL) { /* out of memory */ preparsing_reader_clear(reader); + PyErr_Format(MyError,"Out of memory? Couldn't allocate %d bytes in preparsing_reader_feed()",(int)reader->buffer_len); return NULL; } } |