diff -r 336137a359ae Python/Python-ast.c --- a/Python/Python-ast.c Fri Mar 11 10:27:14 2011 -0500 +++ b/Python/Python-ast.c Fri Mar 11 16:33:22 2011 -0500 @@ -3974,7 +3974,7 @@ expr_ty target; expr_ty iter; asdl_seq* body; - asdl_seq* orelse; + asdl_seq* orelse = NULL; if (PyObject_HasAttrString(obj, "target")) { int res; @@ -4036,13 +4036,15 @@ goto failed; } len = PyList_GET_SIZE(tmp); - orelse = asdl_seq_new(len, arena); - if (orelse == NULL) goto failed; - for (i = 0; i < len; i++) { - stmt_ty value; - res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); - if (res != 0) goto failed; - asdl_seq_SET(orelse, i, value); + if (len) { + orelse = asdl_seq_new(len, arena); + if (orelse == NULL) goto failed; + for (i = 0; i < len; i++) { + stmt_ty value; + res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); + if (res != 0) goto failed; + asdl_seq_SET(orelse, i, value); + } } Py_XDECREF(tmp); tmp = NULL; @@ -4062,7 +4064,7 @@ if (isinstance) { expr_ty test; asdl_seq* body; - asdl_seq* orelse; + asdl_seq* orelse = NULL; if (PyObject_HasAttrString(obj, "test")) { int res; @@ -4112,13 +4114,15 @@ goto failed; } len = PyList_GET_SIZE(tmp); - orelse = asdl_seq_new(len, arena); - if (orelse == NULL) goto failed; - for (i = 0; i < len; i++) { - stmt_ty value; - res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); - if (res != 0) goto failed; - asdl_seq_SET(orelse, i, value); + if (len) { + orelse = asdl_seq_new(len, arena); + if (orelse == NULL) goto failed; + for (i = 0; i < len; i++) { + stmt_ty value; + res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); + if (res != 0) goto failed; + asdl_seq_SET(orelse, i, value); + } } Py_XDECREF(tmp); tmp = NULL; @@ -4137,7 +4141,7 @@ if (isinstance) { expr_ty test; asdl_seq* body; - asdl_seq* orelse; + asdl_seq* orelse = NULL; if (PyObject_HasAttrString(obj, "test")) { int res; @@ -4187,13 +4191,15 @@ goto failed; } len = PyList_GET_SIZE(tmp); - orelse = asdl_seq_new(len, arena); - if (orelse == NULL) goto failed; - for (i = 0; i < len; i++) { - stmt_ty value; - res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); - if (res != 0) goto failed; - asdl_seq_SET(orelse, i, value); + if (len) { + orelse = asdl_seq_new(len, arena); + if (orelse == NULL) goto failed; + for (i = 0; i < len; i++) { + stmt_ty value; + res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); + if (res != 0) goto failed; + asdl_seq_SET(orelse, i, value); + } } Py_XDECREF(tmp); tmp = NULL; @@ -4308,7 +4314,7 @@ if (isinstance) { asdl_seq* body; asdl_seq* handlers; - asdl_seq* orelse; + asdl_seq* orelse = NULL; if (PyObject_HasAttrString(obj, "body")) { int res; @@ -4371,13 +4377,15 @@ goto failed; } len = PyList_GET_SIZE(tmp); - orelse = asdl_seq_new(len, arena); - if (orelse == NULL) goto failed; - for (i = 0; i < len; i++) { - stmt_ty value; - res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); - if (res != 0) goto failed; - asdl_seq_SET(orelse, i, value); + if (len) { + orelse = asdl_seq_new(len, arena); + if (orelse == NULL) goto failed; + for (i = 0; i < len; i++) { + stmt_ty value; + res = obj2ast_stmt(PyList_GET_ITEM(tmp, i), &value, arena); + if (res != 0) goto failed; + asdl_seq_SET(orelse, i, value); + } } Py_XDECREF(tmp); tmp = NULL; diff -r 336137a359ae Python/compile.c --- a/Python/compile.c Fri Mar 11 10:27:14 2011 -0500 +++ b/Python/compile.c Fri Mar 11 16:33:22 2011 -0500 @@ -1719,8 +1719,8 @@ VISIT(c, expr, s->v.If.test); ADDOP_JABS(c, POP_JUMP_IF_FALSE, next); VISIT_SEQ(c, stmt, s->v.If.body); - ADDOP_JREL(c, JUMP_FORWARD, end); if (s->v.If.orelse) { + ADDOP_JREL(c, JUMP_FORWARD, end); compiler_use_next_block(c, next); VISIT_SEQ(c, stmt, s->v.If.orelse); }