[Python-checkins] python/dist/src/Python Python-ast.c, 1.1.2.12, 1.1.2.13
nnorwitz@users.sourceforge.net
nnorwitz at users.sourceforge.net
Fri Oct 14 09:23:45 CEST 2005
Update of /cvsroot/python/python/dist/src/Python
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21725/Python
Modified Files:
Tag: ast-branch
Python-ast.c
Log Message:
Hmmm, it looks like this wasn't checked in after the line number change.
Fix a whole lot of memory leaks. Still some more to go.
Index: Python-ast.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/Attic/Python-ast.c,v
retrieving revision 1.1.2.12
retrieving revision 1.1.2.13
diff -u -d -r1.1.2.12 -r1.1.2.13
--- Python-ast.c 13 Apr 2005 19:44:37 -0000 1.1.2.12
+++ Python-ast.c 14 Oct 2005 07:23:42 -0000 1.1.2.13
@@ -515,7 +515,7 @@
}
expr_ty
-BoolOp(boolop_ty op, asdl_seq * values)
+BoolOp(boolop_ty op, asdl_seq * values, int lineno)
{
expr_ty p;
if (!op) {
@@ -531,11 +531,12 @@
p->kind = BoolOp_kind;
p->v.BoolOp.op = op;
p->v.BoolOp.values = values;
+ p->lineno = lineno;
return p;
}
expr_ty
-BinOp(expr_ty left, operator_ty op, expr_ty right)
+BinOp(expr_ty left, operator_ty op, expr_ty right, int lineno)
{
expr_ty p;
if (!left) {
@@ -562,11 +563,12 @@
p->v.BinOp.left = left;
p->v.BinOp.op = op;
p->v.BinOp.right = right;
+ p->lineno = lineno;
return p;
}
expr_ty
-UnaryOp(unaryop_ty op, expr_ty operand)
+UnaryOp(unaryop_ty op, expr_ty operand, int lineno)
{
expr_ty p;
if (!op) {
@@ -587,11 +589,12 @@
p->kind = UnaryOp_kind;
p->v.UnaryOp.op = op;
p->v.UnaryOp.operand = operand;
+ p->lineno = lineno;
return p;
}
expr_ty
-Lambda(arguments_ty args, expr_ty body)
+Lambda(arguments_ty args, expr_ty body, int lineno)
{
expr_ty p;
if (!args) {
@@ -612,11 +615,12 @@
p->kind = Lambda_kind;
p->v.Lambda.args = args;
p->v.Lambda.body = body;
+ p->lineno = lineno;
return p;
}
expr_ty
-Dict(asdl_seq * keys, asdl_seq * values)
+Dict(asdl_seq * keys, asdl_seq * values, int lineno)
{
expr_ty p;
p = (expr_ty)malloc(sizeof(*p));
@@ -627,11 +631,12 @@
p->kind = Dict_kind;
p->v.Dict.keys = keys;
p->v.Dict.values = values;
+ p->lineno = lineno;
return p;
}
expr_ty
-ListComp(expr_ty elt, asdl_seq * generators)
+ListComp(expr_ty elt, asdl_seq * generators, int lineno)
{
expr_ty p;
if (!elt) {
@@ -647,11 +652,12 @@
p->kind = ListComp_kind;
p->v.ListComp.elt = elt;
p->v.ListComp.generators = generators;
+ p->lineno = lineno;
return p;
}
expr_ty
-GeneratorExp(expr_ty elt, asdl_seq * generators)
+GeneratorExp(expr_ty elt, asdl_seq * generators, int lineno)
{
expr_ty p;
if (!elt) {
@@ -667,11 +673,12 @@
p->kind = GeneratorExp_kind;
p->v.GeneratorExp.elt = elt;
p->v.GeneratorExp.generators = generators;
+ p->lineno = lineno;
return p;
}
expr_ty
-Compare(expr_ty left, asdl_seq * ops, asdl_seq * comparators)
+Compare(expr_ty left, asdl_seq * ops, asdl_seq * comparators, int lineno)
{
expr_ty p;
if (!left) {
@@ -688,12 +695,13 @@
p->v.Compare.left = left;
p->v.Compare.ops = ops;
p->v.Compare.comparators = comparators;
+ p->lineno = lineno;
return p;
}
expr_ty
Call(expr_ty func, asdl_seq * args, asdl_seq * keywords, expr_ty starargs,
- expr_ty kwargs)
+ expr_ty kwargs, int lineno)
{
expr_ty p;
if (!func) {
@@ -712,11 +720,12 @@
p->v.Call.keywords = keywords;
p->v.Call.starargs = starargs;
p->v.Call.kwargs = kwargs;
+ p->lineno = lineno;
return p;
}
expr_ty
-Repr(expr_ty value)
+Repr(expr_ty value, int lineno)
{
expr_ty p;
if (!value) {
@@ -731,11 +740,12 @@
}
p->kind = Repr_kind;
p->v.Repr.value = value;
+ p->lineno = lineno;
return p;
}
expr_ty
-Num(object n)
+Num(object n, int lineno)
{
expr_ty p;
if (!n) {
@@ -750,11 +760,12 @@
}
p->kind = Num_kind;
p->v.Num.n = n;
+ p->lineno = lineno;
return p;
}
expr_ty
-Str(string s)
+Str(string s, int lineno)
{
expr_ty p;
if (!s) {
@@ -769,11 +780,12 @@
}
p->kind = Str_kind;
p->v.Str.s = s;
+ p->lineno = lineno;
return p;
}
expr_ty
-Attribute(expr_ty value, identifier attr, expr_context_ty ctx)
+Attribute(expr_ty value, identifier attr, expr_context_ty ctx, int lineno)
{
expr_ty p;
if (!value) {
@@ -800,11 +812,12 @@
p->v.Attribute.value = value;
p->v.Attribute.attr = attr;
p->v.Attribute.ctx = ctx;
+ p->lineno = lineno;
return p;
}
expr_ty
-Subscript(expr_ty value, slice_ty slice, expr_context_ty ctx)
+Subscript(expr_ty value, slice_ty slice, expr_context_ty ctx, int lineno)
{
expr_ty p;
if (!value) {
@@ -831,11 +844,12 @@
p->v.Subscript.value = value;
p->v.Subscript.slice = slice;
p->v.Subscript.ctx = ctx;
+ p->lineno = lineno;
return p;
}
expr_ty
-Name(identifier id, expr_context_ty ctx)
+Name(identifier id, expr_context_ty ctx, int lineno)
{
expr_ty p;
if (!id) {
@@ -856,11 +870,12 @@
p->kind = Name_kind;
p->v.Name.id = id;
p->v.Name.ctx = ctx;
+ p->lineno = lineno;
return p;
}
expr_ty
-List(asdl_seq * elts, expr_context_ty ctx)
+List(asdl_seq * elts, expr_context_ty ctx, int lineno)
{
expr_ty p;
if (!ctx) {
@@ -876,11 +891,12 @@
p->kind = List_kind;
p->v.List.elts = elts;
p->v.List.ctx = ctx;
+ p->lineno = lineno;
return p;
}
expr_ty
-Tuple(asdl_seq * elts, expr_context_ty ctx)
+Tuple(asdl_seq * elts, expr_context_ty ctx, int lineno)
{
expr_ty p;
if (!ctx) {
@@ -896,6 +912,7 @@
p->kind = Tuple_kind;
p->v.Tuple.elts = elts;
p->v.Tuple.ctx = ctx;
+ p->lineno = lineno;
return p;
}
@@ -1061,38 +1078,48 @@
return p;
}
-void
-free_mod(mod_ty o)
+static void
+free_seq_exprs(asdl_seq *seq)
{
int i, n;
- asdl_seq *seq;
+ n = asdl_seq_LEN(seq);
+ for (i = 0; i < n; i++)
+ free_expr((expr_ty)asdl_seq_GET(seq, i));
+ asdl_seq_free(seq);
+}
+
+static void
+free_seq_stmts(asdl_seq *seq)
+{
+ int i, n;
+ n = asdl_seq_LEN(seq);
+ for (i = 0; i < n; i++)
+ free_stmt((stmt_ty)asdl_seq_GET(seq, i));
+ asdl_seq_free(seq);
+}
+void
+free_mod(mod_ty o)
+{
if (!o)
return;
switch (o->kind) {
case Module_kind:
- seq = o->v.Module.body;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_stmt((stmt_ty)asdl_seq_GET(seq, i));
+ free_seq_stmts(o->v.Module.body);
break;
case Interactive_kind:
- seq = o->v.Interactive.body;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_stmt((stmt_ty)asdl_seq_GET(seq, i));
+ free_seq_stmts(o->v.Interactive.body);
break;
case Expression_kind:
free_expr((expr_ty)o->v.Expression.body);
break;
case Suite_kind:
- seq = o->v.Suite.body;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_stmt((stmt_ty)asdl_seq_GET(seq, i));
+ free_seq_stmts(o->v.Suite.body);
break;
}
+
+ free(o);
}
void
@@ -1108,135 +1135,85 @@
case FunctionDef_kind:
Py_DECREF((identifier)o->v.FunctionDef.name);
free_arguments((arguments_ty)o->v.FunctionDef.args);
- seq = o->v.FunctionDef.body;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_stmt((stmt_ty)asdl_seq_GET(seq, i));
- seq = o->v.FunctionDef.decorators;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_expr((expr_ty)asdl_seq_GET(seq, i));
+ free_seq_stmts(o->v.FunctionDef.body);
+ free_seq_exprs(o->v.FunctionDef.decorators);
break;
case ClassDef_kind:
Py_DECREF((identifier)o->v.ClassDef.name);
- seq = o->v.ClassDef.bases;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_expr((expr_ty)asdl_seq_GET(seq, i));
- seq = o->v.ClassDef.body;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_stmt((stmt_ty)asdl_seq_GET(seq, i));
+ free_seq_exprs(o->v.ClassDef.bases);
+ free_seq_stmts(o->v.ClassDef.body);
break;
case Return_kind:
if (o->v.Return.value) {
- free_expr((expr_ty)o->v.Return.value);
+ free_expr(o->v.Return.value);
}
break;
case Yield_kind:
- free_expr((expr_ty)o->v.Yield.value);
+ free_expr(o->v.Yield.value);
break;
case Delete_kind:
- seq = o->v.Delete.targets;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_expr((expr_ty)asdl_seq_GET(seq, i));
+ free_seq_exprs(o->v.Delete.targets);
break;
case Assign_kind:
- seq = o->v.Assign.targets;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_expr((expr_ty)asdl_seq_GET(seq, i));
- free_expr((expr_ty)o->v.Assign.value);
+ free_seq_exprs(o->v.Assign.targets);
+ free_expr(o->v.Assign.value);
break;
case AugAssign_kind:
- free_expr((expr_ty)o->v.AugAssign.target);
- free_operator((operator_ty)o->v.AugAssign.op);
- free_expr((expr_ty)o->v.AugAssign.value);
+ free_expr(o->v.AugAssign.target);
+ free_operator(o->v.AugAssign.op);
+ free_expr(o->v.AugAssign.value);
break;
case Print_kind:
if (o->v.Print.dest) {
free_expr((expr_ty)o->v.Print.dest);
}
- seq = o->v.Print.values;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_expr((expr_ty)asdl_seq_GET(seq, i));
+ free_seq_exprs(o->v.Print.values);
break;
case For_kind:
- free_expr((expr_ty)o->v.For.target);
- free_expr((expr_ty)o->v.For.iter);
- seq = o->v.For.body;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_stmt((stmt_ty)asdl_seq_GET(seq, i));
- seq = o->v.For.orelse;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_stmt((stmt_ty)asdl_seq_GET(seq, i));
+ free_expr(o->v.For.target);
+ free_expr(o->v.For.iter);
+ free_seq_stmts(o->v.For.body);
+ free_seq_stmts(o->v.For.orelse);
break;
case While_kind:
- free_expr((expr_ty)o->v.While.test);
- seq = o->v.While.body;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_stmt((stmt_ty)asdl_seq_GET(seq, i));
- seq = o->v.While.orelse;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_stmt((stmt_ty)asdl_seq_GET(seq, i));
+ free_expr(o->v.While.test);
+ free_seq_stmts(o->v.While.body);
+ free_seq_stmts(o->v.While.orelse);
break;
case If_kind:
- free_expr((expr_ty)o->v.If.test);
- seq = o->v.If.body;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_stmt((stmt_ty)asdl_seq_GET(seq, i));
- seq = o->v.If.orelse;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_stmt((stmt_ty)asdl_seq_GET(seq, i));
+ free_expr(o->v.If.test);
+ free_seq_stmts(o->v.If.body);
+ free_seq_stmts(o->v.If.orelse);
break;
case Raise_kind:
if (o->v.Raise.type) {
- free_expr((expr_ty)o->v.Raise.type);
+ free_expr(o->v.Raise.type);
}
if (o->v.Raise.inst) {
- free_expr((expr_ty)o->v.Raise.inst);
+ free_expr(o->v.Raise.inst);
}
if (o->v.Raise.tback) {
- free_expr((expr_ty)o->v.Raise.tback);
+ free_expr(o->v.Raise.tback);
}
break;
case TryExcept_kind:
- seq = o->v.TryExcept.body;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_stmt((stmt_ty)asdl_seq_GET(seq, i));
+ free_seq_stmts(o->v.TryExcept.body);
seq = o->v.TryExcept.handlers;
n = asdl_seq_LEN(seq);
for (i = 0; i < n; i++)
free_excepthandler((excepthandler_ty)asdl_seq_GET(seq,
i));
- seq = o->v.TryExcept.orelse;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_stmt((stmt_ty)asdl_seq_GET(seq, i));
+ asdl_seq_free(seq);
+ free_seq_stmts(o->v.TryExcept.orelse);
break;
case TryFinally_kind:
- seq = o->v.TryFinally.body;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_stmt((stmt_ty)asdl_seq_GET(seq, i));
- seq = o->v.TryFinally.finalbody;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_stmt((stmt_ty)asdl_seq_GET(seq, i));
+ free_seq_stmts(o->v.TryFinally.body);
+ free_seq_stmts(o->v.TryFinally.finalbody);
break;
case Assert_kind:
- free_expr((expr_ty)o->v.Assert.test);
+ free_expr(o->v.Assert.test);
if (o->v.Assert.msg) {
- free_expr((expr_ty)o->v.Assert.msg);
+ free_expr(o->v.Assert.msg);
}
break;
case Import_kind:
@@ -1244,21 +1221,23 @@
n = asdl_seq_LEN(seq);
for (i = 0; i < n; i++)
free_alias((alias_ty)asdl_seq_GET(seq, i));
+ asdl_seq_free(seq);
break;
case ImportFrom_kind:
- Py_DECREF((identifier)o->v.ImportFrom.module);
+ Py_DECREF(o->v.ImportFrom.module);
seq = o->v.ImportFrom.names;
n = asdl_seq_LEN(seq);
for (i = 0; i < n; i++)
free_alias((alias_ty)asdl_seq_GET(seq, i));
+ asdl_seq_free(seq);
break;
case Exec_kind:
- free_expr((expr_ty)o->v.Exec.body);
+ free_expr(o->v.Exec.body);
if (o->v.Exec.globals) {
- free_expr((expr_ty)o->v.Exec.globals);
+ free_expr(o->v.Exec.globals);
}
if (o->v.Exec.locals) {
- free_expr((expr_ty)o->v.Exec.locals);
+ free_expr(o->v.Exec.locals);
}
break;
case Global_kind:
@@ -1266,9 +1245,10 @@
n = asdl_seq_LEN(seq);
for (i = 0; i < n; i++)
Py_DECREF((identifier)asdl_seq_GET(seq, i));
+ asdl_seq_free(seq);
break;
case Expr_kind:
- free_expr((expr_ty)o->v.Expr.value);
+ free_expr(o->v.Expr.value);
break;
case Pass_kind:
break;
@@ -1277,6 +1257,8 @@
case Continue_kind:
break;
}
+
+ free(o);
}
void
@@ -1290,81 +1272,70 @@
switch (o->kind) {
case BoolOp_kind:
- free_boolop((boolop_ty)o->v.BoolOp.op);
- seq = o->v.BoolOp.values;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_expr((expr_ty)asdl_seq_GET(seq, i));
+ free_boolop(o->v.BoolOp.op);
+ free_seq_exprs(o->v.BoolOp.values);
break;
case BinOp_kind:
- free_expr((expr_ty)o->v.BinOp.left);
- free_operator((operator_ty)o->v.BinOp.op);
- free_expr((expr_ty)o->v.BinOp.right);
+ free_expr(o->v.BinOp.left);
+ free_operator(o->v.BinOp.op);
+ free_expr(o->v.BinOp.right);
break;
case UnaryOp_kind:
- free_unaryop((unaryop_ty)o->v.UnaryOp.op);
- free_expr((expr_ty)o->v.UnaryOp.operand);
+ free_unaryop(o->v.UnaryOp.op);
+ free_expr(o->v.UnaryOp.operand);
break;
case Lambda_kind:
- free_arguments((arguments_ty)o->v.Lambda.args);
- free_expr((expr_ty)o->v.Lambda.body);
+ free_arguments(o->v.Lambda.args);
+ free_expr(o->v.Lambda.body);
break;
case Dict_kind:
- seq = o->v.Dict.keys;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_expr((expr_ty)asdl_seq_GET(seq, i));
- seq = o->v.Dict.values;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_expr((expr_ty)asdl_seq_GET(seq, i));
+ free_seq_exprs(o->v.Dict.keys);
+ free_seq_exprs(o->v.Dict.values);
break;
case ListComp_kind:
- free_expr((expr_ty)o->v.ListComp.elt);
+ free_expr(o->v.ListComp.elt);
seq = o->v.ListComp.generators;
n = asdl_seq_LEN(seq);
for (i = 0; i < n; i++)
free_comprehension((comprehension_ty)asdl_seq_GET(seq,
i));
+ asdl_seq_free(seq);
break;
case GeneratorExp_kind:
- free_expr((expr_ty)o->v.GeneratorExp.elt);
+ free_expr(o->v.GeneratorExp.elt);
seq = o->v.GeneratorExp.generators;
n = asdl_seq_LEN(seq);
for (i = 0; i < n; i++)
free_comprehension((comprehension_ty)asdl_seq_GET(seq,
i));
+ asdl_seq_free(seq);
break;
case Compare_kind:
- free_expr((expr_ty)o->v.Compare.left);
+ free_expr(o->v.Compare.left);
seq = o->v.Compare.ops;
n = asdl_seq_LEN(seq);
for (i = 0; i < n; i++)
free_cmpop((cmpop_ty)asdl_seq_GET(seq, i));
- seq = o->v.Compare.comparators;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_expr((expr_ty)asdl_seq_GET(seq, i));
+ asdl_seq_free(seq);
+ free_seq_exprs(o->v.Compare.comparators);
break;
case Call_kind:
- free_expr((expr_ty)o->v.Call.func);
- seq = o->v.Call.args;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_expr((expr_ty)asdl_seq_GET(seq, i));
+ free_expr(o->v.Call.func);
+ free_seq_exprs(o->v.Call.args);
seq = o->v.Call.keywords;
n = asdl_seq_LEN(seq);
for (i = 0; i < n; i++)
free_keyword((keyword_ty)asdl_seq_GET(seq, i));
+ asdl_seq_free(seq);
if (o->v.Call.starargs) {
- free_expr((expr_ty)o->v.Call.starargs);
+ free_expr(o->v.Call.starargs);
}
if (o->v.Call.kwargs) {
- free_expr((expr_ty)o->v.Call.kwargs);
+ free_expr(o->v.Call.kwargs);
}
break;
case Repr_kind:
- free_expr((expr_ty)o->v.Repr.value);
+ free_expr(o->v.Repr.value);
break;
case Num_kind:
Py_DECREF((object)o->v.Num.n);
@@ -1373,43 +1344,37 @@
Py_DECREF((string)o->v.Str.s);
break;
case Attribute_kind:
- free_expr((expr_ty)o->v.Attribute.value);
+ free_expr(o->v.Attribute.value);
Py_DECREF((identifier)o->v.Attribute.attr);
- free_expr_context((expr_context_ty)o->v.Attribute.ctx);
+ free_expr_context(o->v.Attribute.ctx);
break;
case Subscript_kind:
- free_expr((expr_ty)o->v.Subscript.value);
- free_slice((slice_ty)o->v.Subscript.slice);
- free_expr_context((expr_context_ty)o->v.Subscript.ctx);
+ free_expr(o->v.Subscript.value);
+ free_slice(o->v.Subscript.slice);
+ free_expr_context(o->v.Subscript.ctx);
break;
case Name_kind:
Py_DECREF((identifier)o->v.Name.id);
- free_expr_context((expr_context_ty)o->v.Name.ctx);
+ free_expr_context(o->v.Name.ctx);
break;
case List_kind:
- seq = o->v.List.elts;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_expr((expr_ty)asdl_seq_GET(seq, i));
- free_expr_context((expr_context_ty)o->v.List.ctx);
+ free_seq_exprs(o->v.List.elts);
+ free_expr_context(o->v.List.ctx);
break;
case Tuple_kind:
- seq = o->v.Tuple.elts;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_expr((expr_ty)asdl_seq_GET(seq, i));
- free_expr_context((expr_context_ty)o->v.Tuple.ctx);
+ free_seq_exprs(o->v.Tuple.elts);
+ free_expr_context(o->v.Tuple.ctx);
break;
}
+
+ free(o);
}
void
free_expr_context(expr_context_ty o)
{
-
if (!o)
return;
-
}
void
@@ -1440,134 +1405,115 @@
n = asdl_seq_LEN(seq);
for (i = 0; i < n; i++)
free_slice((slice_ty)asdl_seq_GET(seq, i));
+ asdl_seq_free(seq);
break;
case Index_kind:
free_expr((expr_ty)o->v.Index.value);
break;
}
+
+ free(o);
}
void
free_boolop(boolop_ty o)
{
-
if (!o)
return;
-
+ /* XXX: nothing to free, remove??? */
}
void
free_operator(operator_ty o)
{
-
if (!o)
return;
-
+ /* XXX: nothing to free, remove??? */
}
void
free_unaryop(unaryop_ty o)
{
-
if (!o)
return;
-
+ /* XXX: nothing to free, remove??? */
}
void
free_cmpop(cmpop_ty o)
{
-
if (!o)
return;
-
+ /* XXX: nothing to free, remove??? */
}
void
free_comprehension(comprehension_ty o)
{
- int i, n;
- asdl_seq *seq;
-
if (!o)
return;
- free_expr((expr_ty)o->target);
- free_expr((expr_ty)o->iter);
- seq = o->ifs;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_expr((expr_ty)asdl_seq_GET(seq, i));
+ free_expr(o->target);
+ free_expr(o->iter);
+ free_seq_exprs(o->ifs);
+ free(o);
}
void
free_excepthandler(excepthandler_ty o)
{
- int i, n;
- asdl_seq *seq;
-
if (!o)
return;
if (o->type) {
- free_expr((expr_ty)o->type);
+ free_expr(o->type);
}
if (o->name) {
- free_expr((expr_ty)o->name);
+ free_expr(o->name);
}
- seq = o->body;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_stmt((stmt_ty)asdl_seq_GET(seq, i));
+ free_seq_stmts(o->body);
+ free(o);
}
void
free_arguments(arguments_ty o)
{
- int i, n;
- asdl_seq *seq;
-
if (!o)
return;
- seq = o->args;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_expr((expr_ty)asdl_seq_GET(seq, i));
+ free_seq_exprs(o->args);
if (o->vararg) {
Py_DECREF((identifier)o->vararg);
}
if (o->kwarg) {
Py_DECREF((identifier)o->kwarg);
}
- seq = o->defaults;
- n = asdl_seq_LEN(seq);
- for (i = 0; i < n; i++)
- free_expr((expr_ty)asdl_seq_GET(seq, i));
+ free_seq_exprs(o->defaults);
+ free(o);
}
void
free_keyword(keyword_ty o)
{
-
if (!o)
return;
- Py_DECREF((identifier)o->arg);
- free_expr((expr_ty)o->value);
+ Py_DECREF(o->arg);
+ free_expr(o->value);
+ free(o);
}
void
free_alias(alias_ty o)
{
-
if (!o)
return;
- Py_DECREF((identifier)o->name);
+ Py_DECREF(o->name);
if (o->asname) {
- Py_DECREF((identifier)o->asname);
+ Py_DECREF(o->asname);
}
+ free(o);
}
int
More information about the Python-checkins
mailing list