Mercurial > urweb
annotate demo/ref.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 | 5819fb63c93a |
children |
rev | line source |
---|---|
adamc@419 | 1 structure IR = RefFun.Make(struct |
adamc@643 | 2 type data = int |
adamc@419 | 3 end) |
adamc@419 | 4 |
adamc@419 | 5 structure SR = RefFun.Make(struct |
adamc@643 | 6 type data = string |
adamc@419 | 7 end) |
adamc@419 | 8 |
adamc@732 | 9 fun mutate () = |
adamc@419 | 10 ir <- IR.new 3; |
adamc@419 | 11 ir' <- IR.new 7; |
adamc@419 | 12 sr <- SR.new "hi"; |
adamc@419 | 13 |
adamc@434 | 14 IR.write ir' 10; |
adamc@419 | 15 |
adamc@419 | 16 iv <- IR.read ir; |
adamc@419 | 17 iv' <- IR.read ir'; |
adamc@419 | 18 sv <- SR.read sr; |
adamc@419 | 19 |
adamc@434 | 20 IR.delete ir; |
adamc@434 | 21 IR.delete ir'; |
adamc@434 | 22 SR.delete sr; |
adamc@419 | 23 |
adamc@419 | 24 return <xml><body> |
adamc@419 | 25 {[iv]}, {[iv']}, {[sv]} |
adamc@419 | 26 </body></xml> |
adamc@732 | 27 |
adamc@732 | 28 fun main () = return <xml><body> |
adamc@732 | 29 <form><submit action={mutate} value="Do some pointless stuff"/></form> |
adamc@732 | 30 </body></xml> |