Problem sending a Map over captp

Thomas Leonard <[email protected]>
Newsgroups gmane.comp.lang.e.general
Message-ID <[email protected]>
This updoc fails (I get the same problem when not using updoc too):

?? in new vat A
? introducer.onTheAir()
? var x := null
? def sr := makeSturdyRef.temp(&x)
? <file:tmp>.setText(introducer.sturdyToURI(sr))

?? in new vat B
? introducer.onTheAir()
? def sr := introducer.sturdyFromURI(<file:tmp>.getText())
? def foo
? bind foo := ["a" => "b"]
? def done := sr.getRcvr()<-put(foo)
# value: <Promise>
? interp.waitAtTop(done)

?? in vat A
? E.toString(x)
# value: ["a" => "b"]


It prints:

updoc: started

at: <file:....updoc#:span::18:2::18:14>
expr: E.toString(x)
missing new value
original value: ["a" => "b"]
missing original problem
new problem: <NullPointerException>
#   # While printing an class org.erights.e.elib.tables.ConstMapImpl
#   - static E4E#toString(Object)
#   # Problem reporting
(org.erights.e.develop.exception.EBacktraceException: # While quoting
an class org.erights.e.elib.tables.ConstMapImpl)
#   @ toString/1: <file:...updoc#:span::18:4::18:11>
#   - EExpr#evalToPair(Scope)
#   . e`E.toString(x)`.evalToPair(<a Scope>)
#   @ evalToPair/1:
<file:.../e/src/esrc/org/erights/e/elang/cmd/cmdMakerMaker.emaker#:span::128:57::128:66>

If I call put(Ref.resolution(foo)) instead then it works as expected.

The immediate cause is that ConstMapImpl.myTable is null, but I think
this is due to the magic deserialisation code setting (or not setting)
the field directly. It doesn't seem to use the constructor, and the
field says:

    /**
     * This class should never be directly unserialized, so this instance
     * variable need not be declared serial.
     */
    private final transient FlexMap myTable;

But I don't know how captp works. Any suggestions?


-- 
Dr Thomas Leonard		ROX desktop / Zero Install
GPG: 9242 9807 C985 3C07 44A6  8B9A AE07 8280 59A5 3CC1
GPG: DA98 25AE CAD0 8975 7CDA  BD8E 0713 3F96 CA74 D8BA
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.