From 9346cab684bb7718a6ba448d377ee7baf1016b37 Mon Sep 17 00:00:00 2001 From: Keegan McAllister Date: Tue, 6 Aug 2013 09:37:29 -0700 Subject: [PATCH 01/17] Remove rust-glut --- .gitmodules | 3 --- configure | 1 - mk/sub.mk | 8 -------- src/support/glut/rust-glut | 1 - 4 files changed, 13 deletions(-) delete mode 160000 src/support/glut/rust-glut diff --git a/.gitmodules b/.gitmodules index e95e06940ca..cbb9898d82c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -22,9 +22,6 @@ [submodule "src/support/opengles/rust-opengles"] path = src/support/opengles/rust-opengles url = https://github.com/mozilla-servo/rust-opengles.git -[submodule "src/support/glut/rust-glut"] - path = src/support/glut/rust-glut - url = https://github.com/mozilla-servo/rust-glut.git [submodule "src/support/layers/rust-layers"] path = src/support/layers/rust-layers url = https://github.com/mozilla-servo/rust-layers.git diff --git a/configure b/configure index f0c24ba25e6..fb397361737 100755 --- a/configure +++ b/configure @@ -403,7 +403,6 @@ CFG_SUBMODULES="\ support/css/rust-css \ support/css/rust-cssparser \ support/geom/rust-geom \ - support/glut/rust-glut \ support/glfw/glfw \ support/glfw/glfw-rs \ support/harfbuzz/rust-harfbuzz \ diff --git a/mk/sub.mk b/mk/sub.mk index 79f67e72954..38d748d9597 100644 --- a/mk/sub.mk +++ b/mk/sub.mk @@ -51,10 +51,6 @@ DEPS_glfw-rs += \ glfw \ $(NULL) -DEPS_rust-glut += \ - rust-opengles \ - $(NULL) - DEPS_rust-layers += \ rust-geom \ rust-opengles \ @@ -143,10 +139,6 @@ DEPS_rust-layers += \ rust-cocoa \ $(NULL) -DEPS_rust-glut += \ - rust-cocoa \ - $(NULL) - endif ifeq ($(CFG_OSTYPE),unknown-linux-gnu) diff --git a/src/support/glut/rust-glut b/src/support/glut/rust-glut deleted file mode 160000 index 8f253edf62c..00000000000 --- a/src/support/glut/rust-glut +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8f253edf62cfadfa18edb773aebd74bd62647ce4 From ac380df8b0439a2e909a96ef1ac4dc56501269f0 Mon Sep 17 00:00:00 2001 From: Keegan McAllister Date: Fri, 9 Aug 2013 13:17:53 -0700 Subject: [PATCH 02/17] Update submodules for new Rust version --- src/compiler/rust | 2 +- src/support/azure/rust-azure | 2 +- src/support/css/rust-css | 2 +- src/support/css/rust-cssparser | 2 +- src/support/glfw/glfw-rs | 2 +- src/support/hubbub/rust-hubbub | 2 +- src/support/layers/rust-layers | 2 +- src/support/netsurfcss/rust-netsurfcss | 2 +- src/support/opengles/rust-opengles | 2 +- src/support/png/rust-png | 2 +- src/support/sharegl/sharegl | 2 +- src/support/spidermonkey/rust-mozjs | 2 +- src/support/stb-image/rust-stb-image | 2 +- src/support/wapcaplet/rust-wapcaplet | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/compiler/rust b/src/compiler/rust index 5aa0ca9b2eb..29ffbbaaa85 160000 --- a/src/compiler/rust +++ b/src/compiler/rust @@ -1 +1 @@ -Subproject commit 5aa0ca9b2eb28166d9ab2e86557a5b1f84230b46 +Subproject commit 29ffbbaaa850d3f8fe1b35e3a63defe9206a3eb7 diff --git a/src/support/azure/rust-azure b/src/support/azure/rust-azure index c6774cb3ebd..113e2c37ad7 160000 --- a/src/support/azure/rust-azure +++ b/src/support/azure/rust-azure @@ -1 +1 @@ -Subproject commit c6774cb3ebdb20b1736fa3e8b5e8348fefbc987f +Subproject commit 113e2c37ad772511c473010c4d944459689778a8 diff --git a/src/support/css/rust-css b/src/support/css/rust-css index 789c7a43e28..1c5e9e74b28 160000 --- a/src/support/css/rust-css +++ b/src/support/css/rust-css @@ -1 +1 @@ -Subproject commit 789c7a43e28629ea0b568ce7d9a7ca8a0a975d34 +Subproject commit 1c5e9e74b2857c254a8a0743747bffab6c059331 diff --git a/src/support/css/rust-cssparser b/src/support/css/rust-cssparser index 3dc9f508b85..fc4a1cc0ff6 160000 --- a/src/support/css/rust-cssparser +++ b/src/support/css/rust-cssparser @@ -1 +1 @@ -Subproject commit 3dc9f508b8517e4efddffb4703e3a5e9d63d4f25 +Subproject commit fc4a1cc0ff62aba5a32a66eee5dc087f11daa552 diff --git a/src/support/glfw/glfw-rs b/src/support/glfw/glfw-rs index 8999e447127..6d634549f24 160000 --- a/src/support/glfw/glfw-rs +++ b/src/support/glfw/glfw-rs @@ -1 +1 @@ -Subproject commit 8999e447127c8674cdf130a2bd1759d9f94cd6ad +Subproject commit 6d634549f24c87629cfa3401159b67a5766d5b67 diff --git a/src/support/hubbub/rust-hubbub b/src/support/hubbub/rust-hubbub index 077de218a9c..4c6a69ad0f0 160000 --- a/src/support/hubbub/rust-hubbub +++ b/src/support/hubbub/rust-hubbub @@ -1 +1 @@ -Subproject commit 077de218a9c64608c60c536ef1e87de461852015 +Subproject commit 4c6a69ad0f074d4e03cd25d8cf753e8559712c3e diff --git a/src/support/layers/rust-layers b/src/support/layers/rust-layers index 177277d4aae..cbd5e014697 160000 --- a/src/support/layers/rust-layers +++ b/src/support/layers/rust-layers @@ -1 +1 @@ -Subproject commit 177277d4aaeb56913f2eb04670679cae078cf70b +Subproject commit cbd5e01469797b5f12df6679ff11365a3d4c34d5 diff --git a/src/support/netsurfcss/rust-netsurfcss b/src/support/netsurfcss/rust-netsurfcss index d72f06f5122..93df6bd75c5 160000 --- a/src/support/netsurfcss/rust-netsurfcss +++ b/src/support/netsurfcss/rust-netsurfcss @@ -1 +1 @@ -Subproject commit d72f06f51220083111487940f19ad36d6ae17bd2 +Subproject commit 93df6bd75c5ecd13855ea73be83d3c9a2d5d9d03 diff --git a/src/support/opengles/rust-opengles b/src/support/opengles/rust-opengles index e83cca0e287..795d0d6e5a9 160000 --- a/src/support/opengles/rust-opengles +++ b/src/support/opengles/rust-opengles @@ -1 +1 @@ -Subproject commit e83cca0e287db58a27ee77947a8d4dc3617a6ed0 +Subproject commit 795d0d6e5a9c8645f738d36111ef23021e646870 diff --git a/src/support/png/rust-png b/src/support/png/rust-png index 8f7e491c675..6734e37c202 160000 --- a/src/support/png/rust-png +++ b/src/support/png/rust-png @@ -1 +1 @@ -Subproject commit 8f7e491c675f46386adee39508eaa3ddb0f672ee +Subproject commit 6734e37c2023000d17c4ba4ada9826fc6263efd1 diff --git a/src/support/sharegl/sharegl b/src/support/sharegl/sharegl index a96c9f10677..8850fa10cde 160000 --- a/src/support/sharegl/sharegl +++ b/src/support/sharegl/sharegl @@ -1 +1 @@ -Subproject commit a96c9f10677b0448e4ef69b5ad847da971758eb9 +Subproject commit 8850fa10cdea9218be0fb470a6de3691766fa094 diff --git a/src/support/spidermonkey/rust-mozjs b/src/support/spidermonkey/rust-mozjs index 70f74ad3ff1..f634f6c5e6d 160000 --- a/src/support/spidermonkey/rust-mozjs +++ b/src/support/spidermonkey/rust-mozjs @@ -1 +1 @@ -Subproject commit 70f74ad3ff1e6a83737569a9520a4b68e7405787 +Subproject commit f634f6c5e6de7c3ef4ad62f28d36ea94e782b095 diff --git a/src/support/stb-image/rust-stb-image b/src/support/stb-image/rust-stb-image index 86c9525ec4a..d9854ec23b9 160000 --- a/src/support/stb-image/rust-stb-image +++ b/src/support/stb-image/rust-stb-image @@ -1 +1 @@ -Subproject commit 86c9525ec4aa886c5afe4ec5202ca3a0d400d155 +Subproject commit d9854ec23b9c6348c0b3fef38fe1890124391b8b diff --git a/src/support/wapcaplet/rust-wapcaplet b/src/support/wapcaplet/rust-wapcaplet index 5ed1ff9da43..14a02310b54 160000 --- a/src/support/wapcaplet/rust-wapcaplet +++ b/src/support/wapcaplet/rust-wapcaplet @@ -1 +1 @@ -Subproject commit 5ed1ff9da4301dd3efd7102f3607fd353a099804 +Subproject commit 14a02310b547ee91126c0761b041be04edacd7da From 907d9f23cf8ab5be112376199c3c57ba9e4a3035 Mon Sep 17 00:00:00 2001 From: Keegan McAllister Date: Fri, 9 Aug 2013 13:17:11 -0700 Subject: [PATCH 03/17] Linter changes --- Makefile.in | 2 +- src/components/gfx/font_context.rs | 2 -- src/components/gfx/opts.rs | 1 - src/components/net/image_cache_task.rs | 1 - src/components/net/local_image_cache.rs | 1 - src/components/script/dom/bindings/element.rs | 2 -- src/components/script/dom/bindings/node.rs | 3 --- src/components/script/html/hubbub_html_parser.rs | 2 -- src/components/util/url.rs | 1 - 9 files changed, 1 insertion(+), 14 deletions(-) diff --git a/Makefile.in b/Makefile.in index 5d136a17fc7..d30276acb76 100644 --- a/Makefile.in +++ b/Makefile.in @@ -29,7 +29,7 @@ B := $(CFG_BUILD_DIR) MKFILE_DEPS := config.stamp $(call rwildcard,$(S)mk/,*) -CFG_RUSTC_FLAGS := $(RUSTFLAGS) -A default_methods +CFG_RUSTC_FLAGS := $(RUSTFLAGS) ifdef CFG_DISABLE_OPTIMIZE $(info cfg: disabling rustc optimization (CFG_DISABLE_OPTIMIZE)) diff --git a/src/components/gfx/font_context.rs b/src/components/gfx/font_context.rs index 60f58d9571f..50aaaa8e065 100644 --- a/src/components/gfx/font_context.rs +++ b/src/components/gfx/font_context.rs @@ -34,7 +34,6 @@ pub trait FontContextHandleMethods { fn create_font_from_identifier(&self, ~str, UsedFontStyle) -> Result; } -#[allow(non_implicitly_copyable_typarams)] pub struct FontContext { instance_cache: LRUCache, font_list: Option, // only needed by layout @@ -45,7 +44,6 @@ pub struct FontContext { profiler_chan: ProfilerChan, } -#[allow(non_implicitly_copyable_typarams)] impl<'self> FontContext { pub fn new(backend: BackendType, needs_font_list: bool, diff --git a/src/components/gfx/opts.rs b/src/components/gfx/opts.rs index e1b46027cc1..ac54b5bc9b6 100644 --- a/src/components/gfx/opts.rs +++ b/src/components/gfx/opts.rs @@ -23,7 +23,6 @@ pub struct Opts { output_file: Option<~str>, } -#[allow(non_implicitly_copyable_typarams)] pub fn from_cmdline_args(args: &[~str]) -> Opts { use extra::getopts; diff --git a/src/components/net/image_cache_task.rs b/src/components/net/image_cache_task.rs index aa0440ff701..9f7ea6904c2 100644 --- a/src/components/net/image_cache_task.rs +++ b/src/components/net/image_cache_task.rs @@ -171,7 +171,6 @@ enum AfterPrefetch { DoNotDecode } -#[allow(non_implicitly_copyable_typarams)] impl ImageCache { pub fn run(&mut self) { let mut msg_handlers: ~[~fn(msg: &Msg)] = ~[]; diff --git a/src/components/net/local_image_cache.rs b/src/components/net/local_image_cache.rs index 335d2c6dd26..31adf9326cc 100644 --- a/src/components/net/local_image_cache.rs +++ b/src/components/net/local_image_cache.rs @@ -40,7 +40,6 @@ priv struct ImageState { last_response: ImageResponseMsg } -#[allow(non_implicitly_copyable_typarams)] // Using maps of Urls impl LocalImageCache { /// The local cache will only do a single remote request for a given /// URL in each 'round'. Layout should call this each time it begins diff --git a/src/components/script/dom/bindings/element.rs b/src/components/script/dom/bindings/element.rs index a177c10c332..fa4e28534ec 100644 --- a/src/components/script/dom/bindings/element.rs +++ b/src/components/script/dom/bindings/element.rs @@ -211,7 +211,6 @@ extern fn setAttribute(cx: *JSContext, argc: c_uint, vp: *JSVal) -> JSBool { } } -#[allow(non_implicitly_copyable_typarams)] extern fn HTMLImageElement_getWidth(cx: *JSContext, _argc: c_uint, vp: *mut JSVal) -> JSBool { unsafe { let obj = JS_THIS_OBJECT(cx, cast::transmute(vp)); @@ -241,7 +240,6 @@ extern fn HTMLImageElement_getWidth(cx: *JSContext, _argc: c_uint, vp: *mut JSVa } } -#[allow(non_implicitly_copyable_typarams)] extern fn HTMLImageElement_setWidth(cx: *JSContext, _argc: c_uint, vp: *mut JSVal) -> JSBool { unsafe { let obj = JS_THIS_OBJECT(cx, cast::transmute(vp)); diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index b8351ced73c..bfa153ff9c2 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -97,7 +97,6 @@ macro_rules! generate_element( }) ) -#[allow(non_implicitly_copyable_typarams)] pub fn create(cx: *JSContext, node: &mut AbstractNode) -> *JSObject { match node.type_id() { ElementNodeTypeId(HTMLElementTypeId) => generate_element!(HTMLElement), @@ -138,7 +137,6 @@ pub unsafe fn unwrap(obj: *JSObject) -> AbstractNode { AbstractNode::from_raw(raw) } -#[allow(non_implicitly_copyable_typarams)] extern fn getFirstChild(cx: *JSContext, _argc: c_uint, vp: *mut JSVal) -> JSBool { unsafe { let obj = JS_THIS_OBJECT(cx, cast::transmute(vp)); @@ -160,7 +158,6 @@ extern fn getFirstChild(cx: *JSContext, _argc: c_uint, vp: *mut JSVal) -> JSBool return 1; } -#[allow(non_implicitly_copyable_typarams)] extern fn getNextSibling(cx: *JSContext, _argc: c_uint, vp: *mut JSVal) -> JSBool { unsafe { let obj = JS_THIS_OBJECT(cx, cast::transmute(vp)); diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index fd89d71da96..43a4043bbd8 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -273,7 +273,6 @@ fn build_element_from_tag(cx: *JSContext, tag: &str) -> AbstractNode } } -#[allow(non_implicitly_copyable_typarams)] pub fn parse_html(cx: *JSContext, url: Url, resource_task: ResourceTask, @@ -475,7 +474,6 @@ pub fn parse_html(cx: *JSContext, }, complete_script: |script| { // A little function for holding this lint attr - #[allow(non_implicitly_copyable_typarams)] fn complete_script(script: hubbub::NodeDataPtr, url: Url, js_chan: SharedChan) { diff --git a/src/components/util/url.rs b/src/components/util/url.rs index 0cb8a32c3ce..4aca0ef67f8 100644 --- a/src/components/util/url.rs +++ b/src/components/util/url.rs @@ -17,7 +17,6 @@ Create a URL object from a string. Does various helpful browsery things like is based off the current url */ -#[allow(non_implicitly_copyable_typarams)] pub fn make_url(str_url: ~str, current_url: Option) -> Url { let schm = url::get_scheme(str_url); let str_url = if result::is_err(&schm) { From ffe60ea02704c0bd4545a194bff3f2feafd0133c Mon Sep 17 00:00:00 2001 From: Keegan McAllister Date: Fri, 9 Aug 2013 13:41:10 -0700 Subject: [PATCH 04/17] Trait changes, and eliminate 'copy' --- src/components/gfx/font.rs | 10 +- src/components/gfx/font_context.rs | 12 +-- src/components/gfx/opts.rs | 4 +- src/components/gfx/platform/linux/font.rs | 2 +- src/components/gfx/render_task.rs | 3 +- src/components/gfx/surface.rs | 2 +- src/components/gfx/text/glyph.rs | 4 +- src/components/gfx/text/shaping/harfbuzz.rs | 2 +- src/components/gfx/text/text_run.rs | 4 +- src/components/main/constellation.rs | 10 +- src/components/main/layout/box.rs | 2 +- src/components/main/layout/box_builder.rs | 2 +- src/components/main/layout/float_context.rs | 2 + src/components/main/layout/layout_task.rs | 2 +- src/components/main/layout/text.rs | 2 +- src/components/main/layout/util.rs | 2 +- src/components/main/pipeline.rs | 8 +- src/components/net/image_cache_task.rs | 98 ++++++++++--------- src/components/net/local_image_cache.rs | 10 +- src/components/net/resource_task.rs | 2 +- src/components/script/dom/bindings/element.rs | 2 +- src/components/script/dom/bindings/utils.rs | 3 + src/components/script/dom/characterdata.rs | 2 +- src/components/script/dom/event.rs | 2 +- src/components/script/html/cssparse.rs | 4 +- .../script/html/hubbub_html_parser.rs | 4 +- src/components/script/script_task.rs | 4 +- src/components/util/range.rs | 1 + src/components/util/time.rs | 2 +- src/components/util/url.rs | 4 +- 30 files changed, 111 insertions(+), 100 deletions(-) diff --git a/src/components/gfx/font.rs b/src/components/gfx/font.rs index 7f4bddd7805..03f8def38d2 100644 --- a/src/components/gfx/font.rs +++ b/src/components/gfx/font.rs @@ -183,7 +183,7 @@ impl FontGroup { pub fn new(families: @str, style: &UsedFontStyle, fonts: ~[@mut Font]) -> FontGroup { FontGroup { families: families, - style: copy *style, + style: (*style).clone(), fonts: fonts, } } @@ -264,7 +264,7 @@ impl Font { handle: handle, azure_font: None, shaper: None, - style: copy *style, + style: (*style).clone(), metrics: metrics, backend: backend, profiler_chan: profiler_chan, @@ -281,7 +281,7 @@ impl Font { handle: handle, azure_font: None, shaper: None, - style: copy *style, + style: (*style).clone(), metrics: metrics, backend: backend, profiler_chan: profiler_chan, @@ -387,7 +387,7 @@ impl Font { fields: 0x0200 as uint16_t }; - let mut origin = copy baseline_origin; + let mut origin = baseline_origin.clone(); let mut azglyphs = ~[]; azglyphs.reserve(range.length()); @@ -462,7 +462,7 @@ impl Font { } pub fn get_descriptor(&self) -> FontDescriptor { - FontDescriptor::new(copy self.style, SelectorPlatformIdentifier(self.handle.face_identifier())) + FontDescriptor::new(self.style.clone(), SelectorPlatformIdentifier(self.handle.face_identifier())) } pub fn glyph_index(&self, codepoint: char) -> Option { diff --git a/src/components/gfx/font_context.rs b/src/components/gfx/font_context.rs index 50aaaa8e065..310539db016 100644 --- a/src/components/gfx/font_context.rs +++ b/src/components/gfx/font_context.rs @@ -117,7 +117,7 @@ impl<'self> FontContext { debug!("(transform family) searching for `%s`", family); match self.generic_fonts.find(&family) { None => family, - Some(mapped_family) => copy *mapped_family + Some(mapped_family) => (*mapped_family).clone() } } @@ -142,7 +142,7 @@ impl<'self> FontContext { let font_id = SelectorPlatformIdentifier(font_entry.handle.face_identifier()); - let font_desc = FontDescriptor::new(copy *style, font_id); + let font_desc = FontDescriptor::new((*style).clone(), font_id); let instance = self.get_font_by_descriptor(&font_desc); @@ -164,7 +164,7 @@ impl<'self> FontContext { for result.iter().advance |font_entry| { let font_id = SelectorPlatformIdentifier(font_entry.handle.face_identifier()); - let font_desc = FontDescriptor::new(copy *style, font_id); + let font_desc = FontDescriptor::new((*style).clone(), font_id); let instance = self.get_font_by_descriptor(&font_desc); @@ -176,7 +176,7 @@ impl<'self> FontContext { assert!(fonts.len() > 0); // TODO(Issue #179): Split FontStyle into specified and used styles - let used_style = copy *style; + let used_style = (*style).clone(); debug!("(create font group) --- finished ---"); @@ -187,8 +187,8 @@ impl<'self> FontContext { return match &desc.selector { // TODO(Issue #174): implement by-platform-name font selectors. &SelectorPlatformIdentifier(ref identifier) => { - let result_handle = self.handle.create_font_from_identifier(copy *identifier, - copy desc.style); + let result_handle = self.handle.create_font_from_identifier((*identifier).clone(), + desc.style.clone()); result::chain(result_handle, |handle| { Ok(Font::new_from_adopted_handle(self, handle, diff --git a/src/components/gfx/opts.rs b/src/components/gfx/opts.rs index ac54b5bc9b6..c0bfabbe837 100644 --- a/src/components/gfx/opts.rs +++ b/src/components/gfx/opts.rs @@ -39,13 +39,13 @@ pub fn from_cmdline_args(args: &[~str]) -> Opts { let opt_match = match getopts::getopts(args, opts) { result::Ok(m) => m, - result::Err(f) => fail!(getopts::fail_str(copy f)), + result::Err(f) => fail!(getopts::fail_str(f.clone())), }; let urls = if opt_match.free.is_empty() { fail!(~"servo asks that you provide 1 or more URLs") } else { - copy opt_match.free + opt_match.free.clone() }; let render_backend = match getopts::opt_maybe_str(&opt_match, "r") { diff --git a/src/components/gfx/platform/linux/font.rs b/src/components/gfx/platform/linux/font.rs index dc2eb8bdd3b..8ae4580fcf3 100644 --- a/src/components/gfx/platform/linux/font.rs +++ b/src/components/gfx/platform/linux/font.rs @@ -173,7 +173,7 @@ impl FontHandleMethods for FontHandle { FontHandleMethods::new_from_buffer(fctx, buf.clone(), style) } FontSourceFile(ref file) => { - FontHandle::new_from_file(fctx, copy *file, style) + FontHandle::new_from_file(fctx, (*file).clone(), style) } } } diff --git a/src/components/gfx/render_task.rs b/src/components/gfx/render_task.rs index dab31cdc2f4..20f49738ee0 100644 --- a/src/components/gfx/render_task.rs +++ b/src/components/gfx/render_task.rs @@ -39,6 +39,7 @@ pub enum Msg { } /// A request from the compositor to the renderer for tiles that need to be (re)displayed. +#[deriving(Clone)] pub struct BufferRequest { // The rect in pixels that will be drawn to the screen screen_rect: Rect, @@ -112,7 +113,7 @@ impl RenderTask { id: id, port: port.take(), compositor: compositor, - font_ctx: @mut FontContext::new(copy opts.render_backend, + font_ctx: @mut FontContext::new(opts.render_backend.clone(), false, profiler_chan.clone()), opts: opts, diff --git a/src/components/gfx/surface.rs b/src/components/gfx/surface.rs index 4c965db812b..b30c165c08b 100644 --- a/src/components/gfx/surface.rs +++ b/src/components/gfx/surface.rs @@ -28,7 +28,7 @@ pub struct ImageSurface { impl ImageSurface { pub fn new(size: Size2D, format: format) -> ImageSurface { ImageSurface { - size: copy size, + size: size.clone(), format: format, buffer: vec::from_elem((size.area() as uint) * format.bpp(), 0u8) } diff --git a/src/components/gfx/text/glyph.rs b/src/components/gfx/text/glyph.rs index f6569cc959b..d1373922a51 100644 --- a/src/components/gfx/text/glyph.rs +++ b/src/components/gfx/text/glyph.rs @@ -25,6 +25,7 @@ use extra::sort; /// In the uncommon case (multiple glyphs per unicode character, large glyph index/advance, or /// glyph offsets), we pack the glyph count into GlyphEntry, and store the other glyph information /// in DetailedGlyphStore. +#[deriving(Clone)] struct GlyphEntry { value: u32 } @@ -256,6 +257,7 @@ impl GlyphEntry { // Stores data for a detailed glyph, in the case that several glyphs // correspond to one character, or the glyph's data couldn't be packed. +#[deriving(Clone)] struct DetailedGlyph { index: GlyphIndex, // glyph's advance, in the text's direction (RTL or RTL) @@ -274,7 +276,7 @@ impl DetailedGlyph { } } -#[deriving(Eq)] +#[deriving(Eq, Clone)] struct DetailedGlyphRecord { // source string offset/GlyphEntry offset in the TextRun entry_offset: uint, diff --git a/src/components/gfx/text/shaping/harfbuzz.rs b/src/components/gfx/text/shaping/harfbuzz.rs index 851beb87c8c..736328c5995 100644 --- a/src/components/gfx/text/shaping/harfbuzz.rs +++ b/src/components/gfx/text/shaping/harfbuzz.rs @@ -398,7 +398,7 @@ impl Shaper { // cspan: [-] // covsp: [---------------] - let mut covered_byte_span = copy char_byte_span; + let mut covered_byte_span = char_byte_span.clone(); // extend, clipping at end of text range. while covered_byte_span.end() < byte_max && byteToGlyph[covered_byte_span.end()] == NO_GLYPH { diff --git a/src/components/gfx/text/text_run.rs b/src/components/gfx/text/text_run.rs index c436181977c..1bb5464803f 100644 --- a/src/components/gfx/text/text_run.rs +++ b/src/components/gfx/text/text_run.rs @@ -33,7 +33,7 @@ impl SendableTextRun { }; TextRun { - text: copy self.text, + text: self.text.clone(), font: font, underline: self.underline, glyphs: self.glyphs.clone(), @@ -115,7 +115,7 @@ impl<'self> TextRun { pub fn serialize(&self) -> SendableTextRun { SendableTextRun { - text: copy self.text, + text: self.text.clone(), font: self.font.get_descriptor(), underline: self.underline, glyphs: self.glyphs.clone(), diff --git a/src/components/main/constellation.rs b/src/components/main/constellation.rs index d1ae44f7bfe..af036a5f0aa 100644 --- a/src/components/main/constellation.rs +++ b/src/components/main/constellation.rs @@ -227,7 +227,7 @@ impl Constellation { profiler_chan: ProfilerChan) -> ConstellationChan { - let opts = Cell::new(copy *opts); + let opts = Cell::new((*opts).clone()); let (constellation_port, constellation_chan) = special_stream!(ConstellationChan); let constellation_port = Cell::new(constellation_port); @@ -304,7 +304,7 @@ impl Constellation { self.image_cache_task.clone(), self.resource_task.clone(), self.profiler_chan.clone(), - copy self.opts, + self.opts.clone(), { let size = self.compositor_chan.get_size(); from_value(Size2D(size.width as uint, size.height as uint)) @@ -370,7 +370,7 @@ impl Constellation { self.compositor_chan.clone(), self.image_cache_task.clone(), self.profiler_chan.clone(), - copy self.opts, + self.opts.clone(), source_pipeline, size_future) } else { @@ -382,7 +382,7 @@ impl Constellation { self.image_cache_task.clone(), self.resource_task.clone(), self.profiler_chan.clone(), - copy self.opts, + self.opts.clone(), size_future) }; @@ -438,7 +438,7 @@ impl Constellation { self.image_cache_task.clone(), self.resource_task.clone(), self.profiler_chan.clone(), - copy self.opts, + self.opts.clone(), size_future); if url.path.ends_with(".js") { diff --git a/src/components/main/layout/box.rs b/src/components/main/layout/box.rs index f9b63ed65ed..38f422a1dff 100644 --- a/src/components/main/layout/box.rs +++ b/src/components/main/layout/box.rs @@ -782,7 +782,7 @@ impl RenderBox { // FIXME: Too much allocation here. let font_families = do my_style.font_family().map |family| { match *family { - CSSFontFamilyFamilyName(ref family_str) => copy *family_str, + CSSFontFamilyFamilyName(ref family_str) => (*family_str).clone(), CSSFontFamilyGenericFamily(Serif) => ~"serif", CSSFontFamilyGenericFamily(SansSerif) => ~"sans-serif", CSSFontFamilyGenericFamily(Cursive) => ~"cursive", diff --git a/src/components/main/layout/box_builder.rs b/src/components/main/layout/box_builder.rs index 643a7b80b5d..cd11e948ed0 100644 --- a/src/components/main/layout/box_builder.rs +++ b/src/components/main/layout/box_builder.rs @@ -269,7 +269,7 @@ impl BoxGenerator { do node.with_imm_image_element |image_element| { if image_element.image.is_some() { // FIXME(pcwalton): Don't copy URLs. - let url = copy *image_element.image.get_ref(); + let url = (*image_element.image.get_ref()).clone(); ImageRenderBoxClass(@mut ImageRenderBox::new(base, url, layout_ctx.image_cache)) } else { info!("Tried to make image box, but couldn't find image. Made generic box \ diff --git a/src/components/main/layout/float_context.rs b/src/components/main/layout/float_context.rs index 5528d5ae8f7..60bb9595615 100644 --- a/src/components/main/layout/float_context.rs +++ b/src/components/main/layout/float_context.rs @@ -10,6 +10,7 @@ use std::util::replace; use std::vec; use std::i32::max_value; +#[deriving(Clone)] pub enum FloatType{ FloatLeft, FloatRight @@ -28,6 +29,7 @@ struct FloatContextBase{ offset: Point2D } +#[deriving(Clone)] struct FloatData{ bounds: Rect, f_type: FloatType diff --git a/src/components/main/layout/layout_task.rs b/src/components/main/layout/layout_task.rs index 5170d6f5f88..48c9b347e71 100644 --- a/src/components/main/layout/layout_task.rs +++ b/src/components/main/layout/layout_task.rs @@ -181,7 +181,7 @@ impl LayoutTask { }; // FIXME: Bad copy! - let doc_url = copy data.url; + let doc_url = data.url.clone(); let script_chan = data.script_chan.clone(); debug!("layout: received layout request for: %s", doc_url.to_str()); diff --git a/src/components/main/layout/text.rs b/src/components/main/layout/text.rs index cf9d8f49bcc..525e6239320 100644 --- a/src/components/main/layout/text.rs +++ b/src/components/main/layout/text.rs @@ -50,7 +50,7 @@ pub trait UnscannedMethods { impl UnscannedMethods for RenderBox { fn raw_text(&self) -> ~str { match *self { - UnscannedTextRenderBoxClass(text_box) => copy text_box.text, + UnscannedTextRenderBoxClass(text_box) => text_box.text.clone(), _ => fail!(~"unsupported operation: box.raw_text() on non-unscanned text box."), } } diff --git a/src/components/main/layout/util.rs b/src/components/main/layout/util.rs index 00d4dae218c..e851cbb41b8 100644 --- a/src/components/main/layout/util.rs +++ b/src/components/main/layout/util.rs @@ -13,7 +13,7 @@ pub struct NodeRange { impl NodeRange { pub fn new(node: AbstractNode, range: &Range) -> NodeRange { - NodeRange { node: node, range: copy *range } + NodeRange { node: node, range: (*range).clone() } } } diff --git a/src/components/main/pipeline.rs b/src/components/main/pipeline.rs index 1ea7965b02a..ef33125efeb 100644 --- a/src/components/main/pipeline.rs +++ b/src/components/main/pipeline.rs @@ -52,7 +52,7 @@ impl Pipeline { RenderTask::create(id, render_port, compositor_chan.clone(), - copy opts, + opts.clone(), profiler_chan.clone()); LayoutTask::create(id, @@ -61,7 +61,7 @@ impl Pipeline { script_pipeline.script_chan.clone(), render_chan.clone(), image_cache_task.clone(), - copy opts, + opts.clone(), profiler_chan); let new_layout_info = NewLayoutInfo { @@ -109,7 +109,7 @@ impl Pipeline { RenderTask::create(id, render_port, compositor_chan.clone(), - copy opts, + opts.clone(), profiler_chan.clone()); LayoutTask::create(id, @@ -118,7 +118,7 @@ impl Pipeline { script_chan.clone(), render_chan.clone(), image_cache_task, - copy opts, + opts.clone(), profiler_chan); Pipeline::new(id, subpage_id, diff --git a/src/components/net/image_cache_task.rs b/src/components/net/image_cache_task.rs index 9f7ea6904c2..f81e3fb960d 100644 --- a/src/components/net/image_cache_task.rs +++ b/src/components/net/image_cache_task.rs @@ -157,6 +157,7 @@ struct ImageCache { need_exit: Option>, } +#[deriving(Clone)] enum ImageState { Init, Prefetching(AfterPrefetch), @@ -166,6 +167,7 @@ enum ImageState { Failed } +#[deriving(Clone)] enum AfterPrefetch { DoDecode, DoNotDecode @@ -242,25 +244,25 @@ impl ImageCache { } priv fn prefetch(&self, url: Url) { - match self.get_state(copy url) { + match self.get_state(url.clone()) { Init => { let to_cache = self.chan.clone(); let resource_task = self.resource_task.clone(); - let url_cell = Cell::new(copy url); + let url_cell = Cell::new(url.clone()); do spawn { let url = url_cell.take(); debug!("image_cache_task: started fetch for %s", url.to_str()); - let image = load_image_data(copy url, resource_task.clone()); + let image = load_image_data(url.clone(), resource_task.clone()); let result = if image.is_ok() { Ok(Cell::new(result::unwrap(image))) } else { Err(()) }; - to_cache.send(StorePrefetchedImageData(copy url, result)); - debug!("image_cache_task: ended fetch for %s", (copy url).to_str()); + to_cache.send(StorePrefetchedImageData(url.clone(), result)); + debug!("image_cache_task: ended fetch for %s", (url.clone()).to_str()); } self.set_state(url, Prefetching(DoNotDecode)); @@ -273,19 +275,19 @@ impl ImageCache { } priv fn store_prefetched_image_data(&self, url: Url, data: Result, ()>) { - match self.get_state(copy url) { + match self.get_state(url.clone()) { Prefetching(next_step) => { match data { Ok(data_cell) => { let data = data_cell.take(); - self.set_state(copy url, Prefetched(@Cell::new(data))); + self.set_state(url.clone(), Prefetched(@Cell::new(data))); match next_step { DoDecode => self.decode(url), _ => () } } Err(*) => { - self.set_state(copy url, Failed); + self.set_state(url.clone(), Failed); self.purge_waiters(url, || ImageFailed); } } @@ -302,7 +304,7 @@ impl ImageCache { } priv fn decode(&self, url: Url) { - match self.get_state(copy url) { + match self.get_state(url.clone()) { Init => fail!(~"decoding image before prefetch"), Prefetching(DoNotDecode) => { @@ -319,7 +321,7 @@ impl ImageCache { let data = data_cell.take(); let to_cache = self.chan.clone(); - let url_cell = Cell::new(copy url); + let url_cell = Cell::new(url.clone()); let decode = (self.decoder_factory)(); do spawn { @@ -331,7 +333,7 @@ impl ImageCache { } else { None }; - to_cache.send(StoreImage(copy url, image)); + to_cache.send(StoreImage(url.clone(), image)); debug!("image_cache_task: ended image decode for %s", url.to_str()); } @@ -346,15 +348,15 @@ impl ImageCache { priv fn store_image(&self, url: Url, image: Option>) { - match self.get_state(copy url) { + match self.get_state(url.clone()) { Decoding => { match image { Some(image) => { - self.set_state(copy url, Decoded(@image.clone())); + self.set_state(url.clone(), Decoded(@image.clone())); self.purge_waiters(url, || ImageReady(image.clone()) ); } None => { - self.set_state(copy url, Failed); + self.set_state(url.clone(), Failed); self.purge_waiters(url, || ImageFailed ); } } @@ -383,7 +385,7 @@ impl ImageCache { } priv fn get_image(&self, url: Url, response: Chan) { - match self.get_state(copy url) { + match self.get_state(url.clone()) { Init => fail!(~"request for image before prefetch"), Prefetching(DoDecode) => response.send(ImageNotReady), Prefetching(DoNotDecode) | Prefetched(*) => fail!(~"request for image before decode"), @@ -394,7 +396,7 @@ impl ImageCache { } priv fn wait_for_image(&self, url: Url, response: Chan) { - match self.get_state(copy url) { + match self.get_state(url.clone()) { Init => fail!(~"request for image before prefetch"), Prefetching(DoNotDecode) | Prefetched(*) => fail!(~"request for image before decode"), @@ -540,7 +542,7 @@ fn should_fail_if_requesting_image_before_requesting_decode() { let image_cache_task = ImageCacheTask(mock_resource_task); let url = make_url(~"file", None); - image_cache_task.send(Prefetch(copy url)); + image_cache_task.send(Prefetch(url.clone())); // no decode message let (chan, _port) = stream(); @@ -563,7 +565,7 @@ fn should_not_request_url_from_resource_task_on_multiple_prefetches() { let image_cache_task = ImageCacheTask(mock_resource_task); let url = make_url(~"file", None); - image_cache_task.send(Prefetch(copy url)); + image_cache_task.send(Prefetch(url.clone())); image_cache_task.send(Prefetch(url)); url_requested.recv(); image_cache_task.exit(); @@ -586,8 +588,8 @@ fn should_return_image_not_ready_if_data_has_not_arrived() { let image_cache_task = ImageCacheTask(mock_resource_task); let url = make_url(~"file", None); - image_cache_task.send(Prefetch(copy url)); - image_cache_task.send(Decode(copy url)); + image_cache_task.send(Prefetch(url.clone())); + image_cache_task.send(Decode(url.clone())); let (response_chan, response_port) = stream(); image_cache_task.send(GetImage(url, response_chan)); assert!(response_port.recv() == ImageNotReady); @@ -616,8 +618,8 @@ fn should_return_decoded_image_data_if_data_has_arrived() { } })); - image_cache_task.send(Prefetch(copy url)); - image_cache_task.send(Decode(copy url)); + image_cache_task.send(Prefetch(url.clone())); + image_cache_task.send(Decode(url.clone())); // Wait until our mock resource task has sent the image to the image cache wait_for_image_chan.recv(); @@ -653,15 +655,15 @@ fn should_return_decoded_image_data_for_multiple_requests() { } })); - image_cache_task.send(Prefetch(copy url)); - image_cache_task.send(Decode(copy url)); + image_cache_task.send(Prefetch(url.clone())); + image_cache_task.send(Decode(url.clone())); // Wait until our mock resource task has sent the image to the image cache wait_for_image.recv(); for iter::repeat(2) { let (response_chan, response_port) = stream(); - image_cache_task.send(GetImage(copy url, response_chan)); + image_cache_task.send(GetImage(url.clone(), response_chan)); match response_port.recv() { ImageReady(_) => (), _ => fail @@ -699,12 +701,12 @@ fn should_not_request_image_from_resource_task_if_image_is_already_available() { let image_cache_task = ImageCacheTask(mock_resource_task); let url = make_url(~"file", None); - image_cache_task.send(Prefetch(copy url)); + image_cache_task.send(Prefetch(url.clone())); // Wait until our mock resource task has sent the image to the image cache image_bin_sent.recv(); - image_cache_task.send(Prefetch(copy url)); + image_cache_task.send(Prefetch(url.clone())); image_cache_task.exit(); mock_resource_task.send(resource_task::Exit); @@ -743,14 +745,14 @@ fn should_not_request_image_from_resource_task_if_image_fetch_already_failed() { let image_cache_task = ImageCacheTask(mock_resource_task); let url = make_url(~"file", None); - image_cache_task.send(Prefetch(copy url)); - image_cache_task.send(Decode(copy url)); + image_cache_task.send(Prefetch(url.clone())); + image_cache_task.send(Decode(url.clone())); // Wait until our mock resource task has sent the image to the image cache image_bin_sent.recv(); - image_cache_task.send(Prefetch(copy url)); - image_cache_task.send(Decode(copy url)); + image_cache_task.send(Prefetch(url.clone())); + image_cache_task.send(Decode(url.clone())); image_cache_task.exit(); mock_resource_task.send(resource_task::Exit); @@ -783,8 +785,8 @@ fn should_return_failed_if_image_bin_cannot_be_fetched() { } })); - image_cache_task.send(Prefetch(copy url)); - image_cache_task.send(Decode(copy url)); + image_cache_task.send(Prefetch(url.clone())); + image_cache_task.send(Decode(url.clone())); // Wait until our mock resource task has sent the image to the image cache wait_for_prefetech.recv(); @@ -821,14 +823,14 @@ fn should_return_failed_for_multiple_get_image_requests_if_image_bin_cannot_be_f } })); - image_cache_task.send(Prefetch(copy url)); - image_cache_task.send(Decode(copy url)); + image_cache_task.send(Prefetch(url.clone())); + image_cache_task.send(Decode(url.clone())); // Wait until our mock resource task has sent the image to the image cache wait_for_prefetech.recv(); let (response_chan, response_port) = stream(); - image_cache_task.send(GetImage(copy url, response_chan)); + image_cache_task.send(GetImage(url.clone(), response_chan)); match response_port.recv() { ImageFailed => (), _ => fail @@ -878,8 +880,8 @@ fn should_return_not_ready_if_image_is_still_decoding() { } })); - image_cache_task.send(Prefetch(copy url)); - image_cache_task.send(Decode(copy url)); + image_cache_task.send(Prefetch(url.clone())); + image_cache_task.send(Decode(url.clone())); // Wait until our mock resource task has sent the image to the image cache wait_for_prefetech.recv(); @@ -921,8 +923,8 @@ fn should_return_failed_if_image_decode_fails() { } })); - image_cache_task.send(Prefetch(copy url)); - image_cache_task.send(Decode(copy url)); + image_cache_task.send(Prefetch(url.clone())); + image_cache_task.send(Decode(url.clone())); // Wait until our mock resource task has sent the image to the image cache wait_for_decode.recv(); @@ -960,8 +962,8 @@ fn should_return_image_on_wait_if_image_is_already_loaded() { } })); - image_cache_task.send(Prefetch(copy url)); - image_cache_task.send(Decode(copy url)); + image_cache_task.send(Prefetch(url.clone())); + image_cache_task.send(Decode(url.clone())); // Wait until our mock resource task has sent the image to the image cache wait_for_decode.recv(); @@ -990,8 +992,8 @@ fn should_return_image_on_wait_if_image_is_not_yet_loaded() { let image_cache_task = ImageCacheTask(mock_resource_task); let url = make_url(~"file", None); - image_cache_task.send(Prefetch(copy url)); - image_cache_task.send(Decode(copy url)); + image_cache_task.send(Prefetch(url.clone())); + image_cache_task.send(Decode(url.clone())); let (response_chan, response_port) = stream(); image_cache_task.send(WaitForImage(url, response_chan)); @@ -1020,8 +1022,8 @@ fn should_return_image_failed_on_wait_if_image_fails_to_load() { let image_cache_task = ImageCacheTask(mock_resource_task); let url = make_url(~"file", None); - image_cache_task.send(Prefetch(copy url)); - image_cache_task.send(Decode(copy url)); + image_cache_task.send(Prefetch(url.clone())); + image_cache_task.send(Decode(url.clone())); let (response_chan, response_port) = stream(); image_cache_task.send(WaitForImage(url, response_chan)); @@ -1047,8 +1049,8 @@ fn sync_cache_should_wait_for_images() { let image_cache_task = SyncImageCacheTask(mock_resource_task); let url = make_url(~"file", None); - image_cache_task.send(Prefetch(copy url)); - image_cache_task.send(Decode(copy url)); + image_cache_task.send(Prefetch(url.clone())); + image_cache_task.send(Decode(url.clone())); let (response_chan, response_port) = stream(); image_cache_task.send(GetImage(url, response_chan)); diff --git a/src/components/net/local_image_cache.rs b/src/components/net/local_image_cache.rs index 31adf9326cc..5555c35aa5f 100644 --- a/src/components/net/local_image_cache.rs +++ b/src/components/net/local_image_cache.rs @@ -51,7 +51,7 @@ impl LocalImageCache { pub fn prefetch(&self, url: &Url) { let state = self.get_state(url); if !state.prefetched { - self.image_cache_task.send(Prefetch(copy *url)); + self.image_cache_task.send(Prefetch((*url).clone())); state.prefetched = true; } } @@ -59,7 +59,7 @@ impl LocalImageCache { pub fn decode(&self, url: &Url) { let state = self.get_state(url); if !state.decoded { - self.image_cache_task.send(Decode(copy *url)); + self.image_cache_task.send(Decode((*url).clone())); state.decoded = true; } } @@ -97,7 +97,7 @@ impl LocalImageCache { } let (response_port, response_chan) = comm::stream(); - self.image_cache_task.send(GetImage(copy *url, response_chan)); + self.image_cache_task.send(GetImage((*url).clone(), response_chan)); let response = response_port.recv(); match response { @@ -110,10 +110,10 @@ impl LocalImageCache { let image_cache_task = self.image_cache_task.clone(); assert!(self.on_image_available.is_some()); let on_image_available = self.on_image_available.get()(); - let url = copy *url; + let url = (*url).clone(); do task::spawn { let (response_port, response_chan) = comm::stream(); - image_cache_task.send(WaitForImage(copy url, response_chan)); + image_cache_task.send(WaitForImage(url.clone(), response_chan)); on_image_available(response_port.recv()); } } diff --git a/src/components/net/resource_task.rs b/src/components/net/resource_task.rs index 457cd6dfd35..0b74e614627 100644 --- a/src/components/net/resource_task.rs +++ b/src/components/net/resource_task.rs @@ -142,7 +142,7 @@ fn test_bad_scheme() { fn should_delegate_to_scheme_loader() { let payload = ~[1, 2, 3]; let loader_factory = |_url: Url, progress_chan: Chan| { - progress_chan.send(Payload(copy payload)); + progress_chan.send(Payload(payload.clone())); progress_chan.send(Done(Ok(()))); }; let loader_factories = ~[(~"snicklefritz", loader_factory)]; diff --git a/src/components/script/dom/bindings/element.rs b/src/components/script/dom/bindings/element.rs index fa4e28534ec..e9336e3da2a 100644 --- a/src/components/script/dom/bindings/element.rs +++ b/src/components/script/dom/bindings/element.rs @@ -273,7 +273,7 @@ extern fn getTagName(cx: *JSContext, _argc: c_uint, vp: *mut JSVal) -> JSBool { let node = unwrap(obj); do node.with_imm_element |elem| { - let s = str(copy elem.tag_name); + let s = str(elem.tag_name.clone()); *vp = domstring_to_jsval(cx, &s); } } diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index 728c1eb112e..c30eea5f1db 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -392,6 +392,7 @@ pub struct JSNativeHolder { propertyHooks: *NativePropertyHooks } +#[deriving(Clone)] pub enum ConstantVal { IntVal(i32), UintVal(u32), @@ -401,6 +402,7 @@ pub enum ConstantVal { VoidVal } +#[deriving(Clone)] pub struct ConstantSpec { name: *libc::c_char, value: ConstantVal @@ -853,6 +855,7 @@ impl DerivedWrapper for AbstractNode { } } +#[deriving(ToStr)] pub enum Error { FailureUnknown } diff --git a/src/components/script/dom/characterdata.rs b/src/components/script/dom/characterdata.rs index d63fd75ec88..2d921fe07c5 100644 --- a/src/components/script/dom/characterdata.rs +++ b/src/components/script/dom/characterdata.rs @@ -23,7 +23,7 @@ impl CharacterData { } pub fn Data(&self) -> DOMString { - copy self.data + self.data.clone() } pub fn SetData(&mut self, arg: &DOMString, _rv: &mut ErrorResult) { diff --git a/src/components/script/dom/event.rs b/src/components/script/dom/event.rs index ca97d1bc364..78ccfa7e759 100644 --- a/src/components/script/dom/event.rs +++ b/src/components/script/dom/event.rs @@ -55,7 +55,7 @@ impl Event { } pub fn Type(&self) -> DOMString { - copy self.type_ + self.type_.clone() } pub fn GetTarget(&self) -> Option<@mut EventTarget> { diff --git a/src/components/script/html/cssparse.rs b/src/components/script/html/cssparse.rs index 95a600682ac..0a04daf15ae 100644 --- a/src/components/script/html/cssparse.rs +++ b/src/components/script/html/cssparse.rs @@ -28,8 +28,8 @@ pub fn spawn_css_parser(provenance: StylesheetProvenance, do task::spawn { let url = do provenance_cell.with_ref |p| { match *p { - UrlProvenance(ref the_url) => copy *the_url, - InlineProvenance(ref the_url, _) => copy *the_url + UrlProvenance(ref the_url) => (*the_url).clone(), + InlineProvenance(ref the_url, _) => (*the_url).clone() } }; diff --git a/src/components/script/html/hubbub_html_parser.rs b/src/components/script/html/hubbub_html_parser.rs index 43a4043bbd8..79403b643c2 100644 --- a/src/components/script/html/hubbub_html_parser.rs +++ b/src/components/script/html/hubbub_html_parser.rs @@ -185,7 +185,7 @@ fn js_script_listener(to_parent: SharedChan, do task::spawn { let (input_port, input_chan) = comm::stream(); // TODO: change copy to move once we can move into closures - resource_task.send(Load(copy url, input_chan)); + resource_task.send(Load(url.clone(), input_chan)); let mut buf = ~[]; loop { @@ -403,7 +403,7 @@ pub fn parse_html(cx: *JSContext, None => {} Some(src) => { let img_url = make_url(src, Some(url2.clone())); - image_element.image = Some(copy img_url); + image_element.image = Some(img_url.clone()); // inform the image cache to load this, but don't store a handle. // TODO (Issue #84): don't prefetch if we are within a