From f95b4f4e0949eefaed871c267626e3ff84ce5ca6 Mon Sep 17 00:00:00 2001 From: Marvin W Date: Tue, 18 Apr 2017 17:53:25 +0200 Subject: xmpp-vala/core+libdino: concurrency + nullity improvements --- xmpp-vala/src/core/stanza_reader.vala | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'xmpp-vala/src/core/stanza_reader.vala') diff --git a/xmpp-vala/src/core/stanza_reader.vala b/xmpp-vala/src/core/stanza_reader.vala index 0a90f855..f1ce5c19 100644 --- a/xmpp-vala/src/core/stanza_reader.vala +++ b/xmpp-vala/src/core/stanza_reader.vala @@ -44,9 +44,10 @@ public class StanzaReader { private void update_buffer() throws XmlError { try { + InputStream? input = this.input; if (input == null) throw new XmlError.EOF("No input stream specified and end of buffer reached."); if (cancellable.is_cancelled()) throw new XmlError.EOF("Input stream is canceled."); - buffer_fill = (int) input.read(buffer, cancellable); + buffer_fill = (int) ((!)input).read(buffer, cancellable); if (buffer_fill == 0) throw new XmlError.EOF("End of input stream reached."); buffer_pos = 0; } catch (GLib.IOError e) { @@ -140,21 +141,21 @@ public class StanzaReader { private void handle_stanza_ns(StanzaNode res) throws XmlError { foreach (StanzaAttribute attr in res.attributes) { - if (attr.name == "xmlns") { + if (attr.name == "xmlns" && attr.val != null) { attr.ns_uri = XMLNS_URI; - ns_state.set_current(attr.val); - } else if (attr.name.contains(":")) { + ns_state.set_current((!)attr.val); + } else if (attr.name.contains(":") && attr.val != null) { var split = attr.name.split(":"); if (split[0] == "xmlns") { attr.ns_uri = XMLNS_URI; attr.name = split[1]; - ns_state.add_assoc(attr.val, attr.name); + ns_state.add_assoc((!)attr.val, attr.name); } } } handle_entry_ns(res); foreach (StanzaAttribute attr in res.attributes) { - handle_entry_ns(attr, res.ns_uri); + handle_entry_ns(attr, res.ns_uri ?? ns_state.current_ns_uri); } } @@ -229,7 +230,7 @@ public class StanzaReader { skip_single(); if (desc.contains(":")) { var split = desc.split(":"); - assert(split[0] == ns_state.find_name(res.ns_uri)); + assert(split[0] == ns_state.find_name((!)res.ns_uri)); assert(split[1] == res.name); } else { assert(ns_state.current_ns_uri == res.ns_uri); -- cgit v1.2.3-54-g00ecf