diff options
Diffstat (limited to 'tools/wixl')
-rw-r--r-- | tools/wixl/builder.vala | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/tools/wixl/builder.vala b/tools/wixl/builder.vala index 2bc7122..252517b 100644 --- a/tools/wixl/builder.vala +++ b/tools/wixl/builder.vala @@ -311,19 +311,23 @@ namespace Wixl { } G? resolve<G> (WixElement element) throws GLib.Error { + G? resolved = null; + if (element.get_type () == typeof (G)) - return element; + resolved = element; else if (element is WixElementRef) { var ref = element as WixElementRef<G>; if (ref.ref_type != typeof (G)) - return null; - if (ref.resolved != null) - return ref.resolved; - ref.resolved = find_element<G> (element.Id); - return ref.resolved; + resolved = null; + else if (ref.resolved == null) + ref.resolved = find_element<G> (element.Id); + resolved = ref.resolved; } - throw new Wixl.Error.FAILED ("couldn't resolve %s", element.Id); + if (resolved == null) + throw new Wixl.Error.FAILED ("couldn't resolve %s", element.Id); + + return resolved; } public override void visit_component (WixComponent comp) throws GLib.Error { |