[Zope3-checkins] CVS: Zope3/src/zodb - serialize.py:1.14

Jeremy Hylton jeremy@zope.com
Mon, 10 Mar 2003 18:45:59 -0500


Update of /cvs-repository/Zope3/src/zodb
In directory cvs.zope.org:/tmp/cvs-serv1263/src/zodb

Modified Files:
	serialize.py 
Log Message:
Replace dangerous hasattr() with careful getattr().


=== Zope3/src/zodb/serialize.py 1.13 => 1.14 ===
--- Zope3/src/zodb/serialize.py:1.13	Mon Mar 10 14:29:00 2003
+++ Zope3/src/zodb/serialize.py	Mon Mar 10 18:45:57 2003
@@ -91,6 +91,8 @@
     root = PersistentDict()
     return writer.getState(root)
 
+_marker = object()
+
 class ObjectWriter:
 
     def __init__(self, jar=None):
@@ -113,10 +115,9 @@
         If it is persistent, it returns the oid and sometimes a tuple
         with other stuff.
         """
-        if not hasattr(obj, '_p_oid'):
+        oid = getattr(obj, "_p_oid", _marker)
+        if oid is _marker:
             return None
-
-        oid = obj._p_oid
 
         # I'd like to write something like this --
         # if isinstance(oid, types.MemberDescriptor):