|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 6/8] gentypes: set pointer to NULL
If the dispose_fn of a type is "free" it means it should be later set to
NULL.
Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
Cc: Ian Campbell <ian.campbell@xxxxxxxxxx>
Cc: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---
tools/libxl/gentypes.py | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/tools/libxl/gentypes.py b/tools/libxl/gentypes.py
index 804cb59..64dc7aa 100644
--- a/tools/libxl/gentypes.py
+++ b/tools/libxl/gentypes.py
@@ -78,14 +78,20 @@ def libxl_C_type_dispose(ty, v, indent = " ", parent =
None):
raise Exception("Array type must have a parent")
if ty.elem_type.dispose_fn is not None:
s += "{\n"
- s += " int i;\n"
- s += " for (i=0; i<%s; i++)\n" % (parent + ty.lenvar.name)
+ s += " if (%s) {\n" % (ty.pass_arg(v, parent is None),)
+ s += " int i;\n"
+ s += " for (i=0; i<%s; i++)\n" % (parent + ty.lenvar.name)
s += libxl_C_type_dispose(ty.elem_type, v+"[i]",
- indent + " ", parent)
+ indent + " ", parent)
if ty.dispose_fn is not None:
if ty.elem_type.dispose_fn is not None:
- s += " "
+ s += " "
s += "%s(%s);\n" % (ty.dispose_fn, ty.pass_arg(v, parent is None))
+ if ty.dispose_fn == "free":
+ if ty.elem_type.dispose_fn is not None: s += " "
+ s += " %s = NULL;\n" % (ty.pass_arg(v, parent is None),)
+ if ty.elem_type.dispose_fn is not None:
+ s += " }\n"
if ty.elem_type.dispose_fn is not None:
s += "}\n"
elif isinstance(ty, idl.Struct) and (parent is None or ty.dispose_fn is
None):
@@ -95,7 +101,8 @@ def libxl_C_type_dispose(ty, v, indent = " ", parent =
None):
else:
if ty.dispose_fn is not None:
s += "%s(%s);\n" % (ty.dispose_fn, ty.pass_arg(v, parent is None))
-
+ if ty.dispose_fn == "free":
+ s += "%s = NULL;\n" % (ty.pass_arg(v, parent is None),)
if s != "":
s = indent + s
return s.replace("\n", "\n%s" % indent).rstrip(indent)
--
1.9.1
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |