Hi folks,

While messing with Zope2's webdav implementation, I ran across this bit of memory-management code:

   dflag = hasattr(ob, '_p_changed') and (ob._p_changed == None)
   ... stuff ...
   if dflag:

I actually think this should be:

   dflag = not getattr(ob, '_p_changed', None)
   ... stuff ...
   if dflag:

.. because when _p_changed on a persistent object (as I read it in the persistence interface file) is None, the object is a ghost. The object will never be a ghost here because non-_p_ attributes are looked up on it before we check for _p_changed, and even if it was a ghost, deactivating a ghost (to turn it into a ghost) is just not useful. I think the only time we don't want to deactivate it is if it has been changed (when _p_changed is True). Or at least that seems to be the intent.

Does this sound right? I have a feeling the answer will be crickets, but I figure what the heck.

- C

Zope-Dev maillist  -  Zope-Dev@zope.org
**  No cross posts or HTML encoding!  **
(Related lists - http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope )

Reply via email to