diff options
author | Adam Chlipala <adam@chlipala.net> | 2016-08-24 12:14:14 -0400 |
---|---|---|
committer | Adam Chlipala <adam@chlipala.net> | 2016-08-24 12:14:14 -0400 |
commit | 0b38f30883241b7dc45f8e2b8ff1a9c52a8b1536 (patch) | |
tree | 9a2cb328aa3c6e6c0ab6ddcd316184479b79c54e /lib | |
parent | 3bcc7ed859aecb758742b0cf23cae98214938012 (diff) |
Plug a reactive-DOM memory leak (thanks to Saulo Araujo for spotting the problem and proposing a slightly different fix)
Diffstat (limited to 'lib')
-rw-r--r-- | lib/js/urweb.js | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/js/urweb.js b/lib/js/urweb.js index 95fd6756..222a8322 100644 --- a/lib/js/urweb.js +++ b/lib/js/urweb.js @@ -1100,12 +1100,18 @@ function active(s) { function input(x, s, recreate, type, name) { if (name) x.name = name; if (type) x.type = type; - x.dead = false; - x.signal = ss(s); - x.sources = null; - x.recreate = recreate(x); addNode(x); - populate(x); + + var sc = document.createElement("script"); + sc.dead = false; + sc.signal = ss(s); + sc.sources = null; + sc.recreate = recreate(x); + + if (x.parentNode) + x.parentNode.insertBefore(sc, x); + + populate(sc); return x; } |