From ca6a46421da9c7ec748bdbe070a33982ff39dd2e Mon Sep 17 00:00:00 2001 From: a-Sansara Date: Tue, 28 Aug 2018 01:58:14 +0200 Subject: [PATCH] fix error loading bad file --- src/vala/Pluie/Yaml.Config.vala | 14 ++++++++------ src/vala/Pluie/Yaml.Loader.vala | 26 ++++++++++++++------------ 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/src/vala/Pluie/Yaml.Config.vala b/src/vala/Pluie/Yaml.Config.vala index e7e5298..0dd78ac 100644 --- a/src/vala/Pluie/Yaml.Config.vala +++ b/src/vala/Pluie/Yaml.Config.vala @@ -81,10 +81,12 @@ public class Pluie.Yaml.Config this.display_file = display_file; if (this.path != null) { this.loader = new Yaml.Loader (this.path, display_file, false); - Yaml.Node? root = this.loader.get_nodes (); - if (root != null) { - this.finder = new Yaml.Finder(root); - this.get_imports (); + if (this.loader.done) { + Yaml.Node? root = this.loader.get_nodes (); + if (root != null) { + this.finder = new Yaml.Finder(root); + this.get_imports (); + } } } } @@ -105,9 +107,9 @@ public class Pluie.Yaml.Config /** * retriew the corresponding Yaml.Root node for loaded yaml file */ - public Yaml.Root root_node () + public Yaml.Root? root_node () { - return this.finder.context as Yaml.Root; + return this.finder!=null ? this.finder.context as Yaml.Root : null; } /** diff --git a/src/vala/Pluie/Yaml.Loader.vala b/src/vala/Pluie/Yaml.Loader.vala index 7ae1d4c..ce965d5 100644 --- a/src/vala/Pluie/Yaml.Loader.vala +++ b/src/vala/Pluie/Yaml.Loader.vala @@ -61,20 +61,22 @@ public class Pluie.Yaml.Loader public Loader (string path, bool display_file = false, bool displayNode = false ) { this.reader = new Io.Reader (path); - this.scanner = new Yaml.Scanner (path); - if (display_file) this.display_file (); + if (this.reader.readable) { + this.scanner = new Yaml.Scanner (path); + if (display_file) this.display_file (); - if ((this.done = this.scanner.run())) { - if (displayNode) { - var n = this.get_nodes (); - if (n != null) n.display_childs (); - of.state(n != null); + if ((this.done = this.scanner.run())) { + if (displayNode) { + var n = this.get_nodes (); + if (n != null) n.display_childs (); + of.state(n != null); + } + } + else { + var evt = this.scanner.get_error_event (); + of.error ("line %d (%s)".printf (evt.line, evt.data["error"])); + this.display_file (evt.line); } - } - else { - var evt = this.scanner.get_error_event (); - of.error ("line %d (%s)".printf (evt.line, evt.data["error"])); - this.display_file (evt.line); } }