annotate tests/rpcDE.ur @ 2297:6d56080f495c

Fix a read-after-free bug using a timestamp check
author Adam Chlipala <adam@chlipala.net>
date Thu, 19 Nov 2015 13:18:58 -0500
parents 3ee6bb48f6e8
children
rev   line source
adamc@638 1 datatype result = Neg | Zero | Pos
adamc@638 2
adamc@638 3 table t : {A : int}
adamc@638 4
adamc@638 5 fun main () : transaction page =
adamc@638 6 let
adamc@638 7 fun check () =
adamc@638 8 r <- oneRow (SELECT SUM(t.A) AS X FROM t);
adamc@638 9 return (if r.X < 0 then
adamc@638 10 Neg
adamc@638 11 else if r.X = 0 then
adamc@638 12 Zero
adamc@638 13 else
adamc@638 14 Pos)
adamc@638 15
adamc@638 16 fun show r =
adamc@638 17 case r of
adamc@638 18 Neg => <xml>-</xml>
adamc@638 19 | Zero => <xml>0</xml>
adamc@638 20 | Pos => <xml>+</xml>
adamc@638 21 in
adamc@638 22 s <- source Zero;
adamc@638 23 return <xml><body>
adamc@638 24 <button value="Get It On!"
adamc@638 25 onclick={r <- check ();
adamc@638 26 set s r}/><br/>
adamc@638 27 <br/>
adamc@638 28 Current: <dyn signal={r <- signal s; return (show r)}/>
adamc@638 29 </body></xml>
adamc@638 30 end