[e-lang] bug in makeCareTaker.emaker
Martin Scheffler
martinscheffler at googlemail.com
Wed Jan 24 09:40:18 CST 2007
I think I have found a small, uncritical bug in makeCareTaker.emaker:
pragma.syntax("0.9")
def makeWeakPtr:=<unsafe:org.erights.e.elib.vat.makeWeakPtr>
def makeGrantMgr:=<import:org.erights.e.facet.makeGrantMgrAuthor>(makeWeakPtr)
def grantMgr:=makeGrantMgr()
def object {
to __reactToLostClient(c) :void {println("Lost a client!")}
}
#create a capability
def forwarder:=grantMgr.makeForwarder("object",object)
#the powerbox function revokeAll revokes this forwarder
grantMgr.revoke("This forwarder was revoked!", "object")
#client closes connection, reactToLostClient gets called
forwarder.__reactToLostClient(null)
#problem: This forwarder was revoked!
---------------------------------------
In makeCareTaker.emaker:
to __reactToLostClient(problem) :void {
underlying.__reactToLostClient(problem)
}
should probably be
to __reactToLostClient(problem) :void {
if (!Ref.isBroken(underlying)) {
underlying.__reactToLostClient(problem)
}
}
Cheers, Martin
More information about the e-lang
mailing list