]> kaliko git repositories - python-musicpd.git/blobdiff - mpd.py
CHANGES.txt: adding changes in prep for 0.3.0 release
[python-musicpd.git] / mpd.py
diff --git a/mpd.py b/mpd.py
index 8810face31f19cc2147815d71f286fca0c0f9c14..5e50295df30acb0523d84f5fedd5dfe77048310e 100644 (file)
--- a/mpd.py
+++ b/mpd.py
@@ -269,20 +269,24 @@ class MPDClient(object):
             yield obj
 
     def _read_command_list(self):
-        for retval in self._command_list:
-            yield retval()
-        self._command_list = None
+        try:
+            for retval in self._command_list:
+                yield retval()
+        finally:
+            self._command_list = None
         self._fetch_nothing()
 
     def _iterator_wrapper(self, iterator):
-        self._iterating = True
-        for item in iterator:
-            yield item
-        self._iterating = False
+        try:
+            for item in iterator:
+                yield item
+        finally:
+            self._iterating = False
 
     def _wrap_iterator(self, iterator):
         if not self.iterate:
             return list(iterator)
+        self._iterating = True
         return self._iterator_wrapper(iterator)
 
     def _fetch_nothing(self):
@@ -418,6 +422,8 @@ class MPDClient(object):
     def command_list_end(self):
         if self._command_list is None:
             raise CommandListError("Not in command list")
+        if self._iterating:
+            raise IteratingError("Already iterating over a command list")
         self._write_command("command_list_end")
         return self._fetch_command_list()