config: Fix for port references generated multiple times
authorGeoffrey Blake <Geoffrey.Blake@arm.com>
Thu, 17 Oct 2013 15:20:45 +0000 (10:20 -0500)
committerGeoffrey Blake <Geoffrey.Blake@arm.com>
Thu, 17 Oct 2013 15:20:45 +0000 (10:20 -0500)
SimObjects are expected to only generate one port reference per
port belonging to them.  There is a subtle bug with using "not"
here as a VectorPort is seen as not having a reference if it is
either None or empty as per Python docs sec 9.9 for Standard operators.
Intended behavior is to only check if we have not created the reference.

src/python/m5/SimObject.py

index 09145f498b05b515df6a71629c8d59c049d9e679..8aa7260e76b9bdc3453b1c62e7c2d3e37b742c53 100644 (file)
@@ -698,7 +698,7 @@ class SimObject(object):
         # via __setattr__.  There is only ever one reference
         # object per port, but we create them lazily here.
         ref = self._port_refs.get(attr)
-        if not ref:
+        if ref == None:
             ref = self._ports[attr].makeRef(self)
             self._port_refs[attr] = ref
         return ref