summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/_csv.c2
-rw-r--r--Modules/_elementtree.c4
-rw-r--r--Modules/_ssl.c6
-rw-r--r--Objects/longobject.c8
4 files changed, 12 insertions, 8 deletions
diff --git a/Modules/_csv.c b/Modules/_csv.c
index 67d5d9f..5e03635 100644
--- a/Modules/_csv.c
+++ b/Modules/_csv.c
@@ -1104,6 +1104,8 @@ join_append_lineterminator(WriterObj *self)
char *terminator;
terminator_len = PyString_Size(self->dialect->lineterminator);
+ if (terminator_len == -1)
+ return 0;
/* grow record buffer if necessary */
if (!join_check_rec_size(self, self->rec_len + terminator_len))
diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c
index 06ae24c..3dd5c26 100644
--- a/Modules/_elementtree.c
+++ b/Modules/_elementtree.c
@@ -327,8 +327,10 @@ element_new(PyObject* tag, PyObject* attrib)
if (attrib != Py_None) {
- if (element_new_extra(self, attrib) < 0)
+ if (element_new_extra(self, attrib) < 0) {
+ PyObject_Del(self);
return NULL;
+ }
self->extra->length = 0;
self->extra->allocated = STATIC_CHILDREN;
diff --git a/Modules/_ssl.c b/Modules/_ssl.c
index 4c0da6f..afe699b 100644
--- a/Modules/_ssl.c
+++ b/Modules/_ssl.c
@@ -183,9 +183,9 @@ newPySSLObject(PySocketSockObject *Sock, char *key_file, char *cert_file)
int sockstate;
self = PyObject_New(PySSLObject, &PySSL_Type); /* Create new object */
- if (self == NULL){
- errstr = "newPySSLObject error";
- goto fail;
+ if (self == NULL) {
+ PyErr_SetString(PySSLErrorObject, "newPySSLObject error");
+ return NULL;
}
memset(self->server, '\0', sizeof(char) * X509_NAME_MAXLEN);
memset(self->issuer, '\0', sizeof(char) * X509_NAME_MAXLEN);
diff --git a/Objects/longobject.c b/Objects/longobject.c
index 5ac570d..e04699e 100644
--- a/Objects/longobject.c
+++ b/Objects/longobject.c
@@ -66,8 +66,7 @@ long_normalize(register PyLongObject *v)
PyLongObject *
_PyLong_New(Py_ssize_t size)
{
- if (size > INT_MAX) {
- /* XXX: Fix this check when ob_size becomes ssize_t */
+ if (size > PY_SSIZE_T_MAX) {
PyErr_NoMemory();
return NULL;
}
@@ -1580,9 +1579,10 @@ x_divrem(PyLongObject *v1, PyLongObject *w1, PyLongObject **prem)
assert(size_w == ABS(w->ob_size)); /* That's how d was calculated */
size_v = ABS(v->ob_size);
- a = _PyLong_New(size_v - size_w + 1);
+ k = size_v - size_w;
+ a = _PyLong_New(k + 1);
- for (j = size_v, k = a->ob_size-1; a != NULL && k >= 0; --j, --k) {
+ for (j = size_v; a != NULL && k >= 0; --j, --k) {
digit vj = (j >= size_v) ? 0 : v->ob_digit[j];
twodigits q;
stwodigits carry = 0;