[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

AltStyle によって変換されたページ (->オリジナル) /