summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorxi <xi@18f92427-320e-0410-9341-c67f048884a3>2006-09-12 13:53:30 +0000
committerxi <xi@18f92427-320e-0410-9341-c67f048884a3>2006-09-12 13:53:30 +0000
commit183e8d1d4abf5fe11e872fd8f5535002ce6ae37f (patch)
treea4507010b45772f8338b48377d7228a79093e128
parent9357b0a9873c2fc0ba231c9d4e4e44e68ab4e188 (diff)
downloadpyyaml-183e8d1d4abf5fe11e872fd8f5535002ce6ae37f.tar.gz
Fix loading an empty YAML stream.
git-svn-id: http://svn.pyyaml.org/pyyaml/trunk@233 18f92427-320e-0410-9341-c67f048884a3
-rw-r--r--ext/_yaml.pyx6
-rw-r--r--lib/yaml/composer.py9
-rw-r--r--tests/data/empty-document-bug.canonical1
-rw-r--r--tests/data/empty-document-bug.data0
4 files changed, 8 insertions, 8 deletions
diff --git a/ext/_yaml.pyx b/ext/_yaml.pyx
index bda7b3f..00d8334 100644
--- a/ext/_yaml.pyx
+++ b/ext/_yaml.pyx
@@ -651,6 +651,9 @@ cdef class CParser:
def check_node(self):
self._parse_next_event()
+ if self.parsed_event.type == YAML_STREAM_START_EVENT:
+ yaml_event_delete(&self.parsed_event)
+ self._parse_next_event()
if self.parsed_event.type != YAML_STREAM_END_EVENT:
return True
return False
@@ -661,9 +664,6 @@ cdef class CParser:
return self._compose_document()
cdef object _compose_document(self):
- if self.parsed_event.type == YAML_STREAM_START_EVENT:
- yaml_event_delete(&self.parsed_event)
- self._parse_next_event()
yaml_event_delete(&self.parsed_event)
node = self._compose_node(None, None)
self._parse_next_event()
diff --git a/lib/yaml/composer.py b/lib/yaml/composer.py
index 5b48fe0..9f5cd87 100644
--- a/lib/yaml/composer.py
+++ b/lib/yaml/composer.py
@@ -14,6 +14,10 @@ class Composer(object):
self.anchors = {}
def check_node(self):
+ # Drop the STREAM-START event.
+ if self.check_event(StreamStartEvent):
+ self.get_event()
+
# If there are more documents available?
return not self.check_event(StreamEndEvent)
@@ -23,11 +27,6 @@ class Composer(object):
return self.compose_document()
def compose_document(self):
-
- # Drop the STREAM-START event.
- if self.check_event(StreamStartEvent):
- self.get_event()
-
# Drop the DOCUMENT-START event.
self.get_event()
diff --git a/tests/data/empty-document-bug.canonical b/tests/data/empty-document-bug.canonical
new file mode 100644
index 0000000..28a6cf1
--- /dev/null
+++ b/tests/data/empty-document-bug.canonical
@@ -0,0 +1 @@
+# This YAML stream contains no YAML documents.
diff --git a/tests/data/empty-document-bug.data b/tests/data/empty-document-bug.data
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/data/empty-document-bug.data