[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