[Erp5-report] r24328 - /erp5/trunk/products/PortalTransforms/TransformEngine.py

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Oct 24 23:39:00 CEST 2008


Author: yusei
Date: Fri Oct 24 23:39:00 2008
New Revision: 24328

URL: http://svn.erp5.org?rev=24328&view=rev
Log:
Fixed infinite loop bug.

Modified:
    erp5/trunk/products/PortalTransforms/TransformEngine.py

Modified: erp5/trunk/products/PortalTransforms/TransformEngine.py
URL: http://svn.erp5.org/erp5/trunk/products/PortalTransforms/TransformEngine.py?rev=24328&r1=24327&r2=24328&view=diff
==============================================================================
--- erp5/trunk/products/PortalTransforms/TransformEngine.py (original)
+++ erp5/trunk/products/PortalTransforms/TransformEngine.py Fri Oct 24 23:39:00 2008
@@ -336,10 +336,18 @@
 
         return winner
 
-    def _getPaths(self, orig, target, requirements, path=None, result=None):
+    def _getPaths(self, orig, target, requirements, path=None, result=None, searched_orig_list=None):
         """return a all path for transformation from orig mimetype to
         target mimetype
         """
+        # don't search the same orig again, otherwise infinite loop occurs.
+        if searched_orig_list is None:
+            searched_orig_list = []
+        if orig in searched_orig_list:
+            return result
+        else:
+            searched_orig_list.append(orig)
+
         if path is None:
             result = []
             path = []
@@ -363,7 +371,7 @@
                     if not requirements:
                         result.append(path[:])
                 else:
-                    self._getPaths(o_mt, target, requirements, path, result)
+                    self._getPaths(o_mt, target, requirements, path, result, searched_orig_list)
                 if required:
                     requirements.append(name)
         path.pop()




More information about the Erp5-report mailing list