about summary refs log tree commit diff
path: root/src/librustdoc/astsrv.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/librustdoc/astsrv.rs')
-rw-r--r--src/librustdoc/astsrv.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/librustdoc/astsrv.rs b/src/librustdoc/astsrv.rs
index dd6e889008f..1d629467a42 100644
--- a/src/librustdoc/astsrv.rs
+++ b/src/librustdoc/astsrv.rs
@@ -21,6 +21,7 @@ use core::prelude::*;
 
 use parse;
 use util;
+use std::cell::Cell;
 
 use core::pipes::{stream, Chan, SharedChan, Port};
 use core::vec;
@@ -78,8 +79,10 @@ fn run<T>(owner: SrvOwner<T>, source: ~str, parse: Parser) -> T {
 
     let (po, ch) = stream();
 
+    let source = Cell(source);
+    let parse = Cell(parse);
     do task::spawn {
-        act(&po, copy source, copy parse);
+        act(&po, source.take(), parse.take());
     }
 
     let srv_ = Srv {