Mercurial > urweb
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 |