Set MemoryError when alloc fails

This commit is contained in:
Neal Norwitz 2005-12-18 04:42:47 +00:00
parent 3c52c5a888
commit 87b801cc2d
1 changed files with 11 additions and 3 deletions

View File

@ -1075,12 +1075,16 @@ compiler_enter_scope(struct compiler *c, identifier name, void *key,
struct compiler_unit *u; struct compiler_unit *u;
u = PyObject_Malloc(sizeof(struct compiler_unit)); u = PyObject_Malloc(sizeof(struct compiler_unit));
if (!u) {
PyErr_NoMemory();
return 0;
}
memset(u, 0, sizeof(struct compiler_unit)); memset(u, 0, sizeof(struct compiler_unit));
u->u_argcount = 0; u->u_argcount = 0;
u->u_ste = PySymtable_Lookup(c->c_st, key); u->u_ste = PySymtable_Lookup(c->c_st, key);
if (!u->u_ste) { if (!u->u_ste) {
compiler_unit_free(u); compiler_unit_free(u);
return 0; return 0;
} }
Py_INCREF(name); Py_INCREF(name);
u->u_name = name; u->u_name = name;
@ -1163,8 +1167,10 @@ compiler_new_block(struct compiler *c)
u = c->u; u = c->u;
b = (basicblock *)PyObject_Malloc(sizeof(basicblock)); b = (basicblock *)PyObject_Malloc(sizeof(basicblock));
if (b == NULL) if (b == NULL) {
PyErr_NoMemory();
return NULL; return NULL;
}
memset((void *)b, 0, sizeof(basicblock)); memset((void *)b, 0, sizeof(basicblock));
assert (b->b_next == NULL); assert (b->b_next == NULL);
b->b_list = u->u_blocks; b->b_list = u->u_blocks;
@ -3747,8 +3753,10 @@ assemble_init(struct assembler *a, int nblocks, int firstlineno)
return 0; return 0;
a->a_postorder = (basicblock **)PyObject_Malloc( a->a_postorder = (basicblock **)PyObject_Malloc(
sizeof(basicblock *) * nblocks); sizeof(basicblock *) * nblocks);
if (!a->a_postorder) if (!a->a_postorder) {
PyErr_NoMemory();
return 0; return 0;
}
return 1; return 1;
} }