From 3f2d253a7198077915d4d06d7cf0a2f5ff5f5fb7 Mon Sep 17 00:00:00 2001 From: "Brian J. Burg" Date: Wed, 5 Sep 2012 13:23:55 -0700 Subject: [PATCH] Various fixes related to explicit copying and reinterpret_cast use. --- src/servo/content/content_task.rs | 6 +++--- src/servo/dom/base.rs | 2 +- src/servo/dom/bindings/utils.rs | 4 ++-- src/servo/dom/style.rs | 4 ++-- src/servo/opts.rs | 2 +- src/servo/resource/image_cache_task.rs | 2 +- src/servo/resource/resource_task.rs | 4 ++-- src/servo/servo.rs | 2 +- src/servo/text/native_font/quartz_native_font.rs | 2 +- src/servo/text/shaper.rs | 8 ++++---- 10 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/servo/content/content_task.rs b/src/servo/content/content_task.rs index f390155e88e..726220d2e51 100644 --- a/src/servo/content/content_task.rs +++ b/src/servo/content/content_task.rs @@ -138,7 +138,7 @@ struct Content { fn handle_control_msg(control_msg: ControlMsg) -> bool { match control_msg { ParseMsg(url) => { - #debug["content: Received url `%s` to parse", url_to_str(url)]; + #debug["content: Received url `%s` to parse", url_to_str(copy url)]; // Note: we can parse the next document in parallel // with any previous documents. @@ -199,11 +199,11 @@ struct Content { ExecuteMsg(url) => { - #debug["content: Received url `%s` to execute", url_to_str(url)]; + #debug["content: Received url `%s` to execute", url_to_str(copy url)]; match read_whole_file(&Path(url.path)) { Err(msg) => { - println(#fmt["Error opening %s: %s", url_to_str(url), msg]); + println(#fmt["Error opening %s: %s", url_to_str(copy url), msg]); } Ok(bytes) => { let compartment = option::expect(self.compartment, ~"TODO error checking"); diff --git a/src/servo/dom/base.rs b/src/servo/dom/base.rs index ed2b31e500b..0e1b74ebdff 100644 --- a/src/servo/dom/base.rs +++ b/src/servo/dom/base.rs @@ -33,7 +33,7 @@ struct Window { match timer_port.recv() { Close => break, Fire(td) => { - content_chan.send(Timer(td)); + content_chan.send(Timer(copy td)); } } } diff --git a/src/servo/dom/bindings/utils.rs b/src/servo/dom/bindings/utils.rs index 4839ccb784a..67420afd696 100644 --- a/src/servo/dom/bindings/utils.rs +++ b/src/servo/dom/bindings/utils.rs @@ -19,7 +19,7 @@ enum DOMString { type rust_box = {rc: uint, td: *sys::TypeDesc, next: *(), prev: *(), payload: T}; unsafe fn squirrel_away(+x: @T) -> *rust_box { - let y: *rust_box = unsafe::reinterpret_cast(x); + let y: *rust_box = unsafe::reinterpret_cast(&x); unsafe::forget(x); y } @@ -27,7 +27,7 @@ unsafe fn squirrel_away(+x: @T) -> *rust_box { type rust_unique = {payload: T}; unsafe fn squirrel_away_unique(+x: ~T) -> *rust_box { - let y: *rust_box = unsafe::reinterpret_cast(x); + let y: *rust_box = unsafe::reinterpret_cast(&x); unsafe::forget(x); y } diff --git a/src/servo/dom/style.rs b/src/servo/dom/style.rs index 9e320e9e889..c391a054ab6 100644 --- a/src/servo/dom/style.rs +++ b/src/servo/dom/style.rs @@ -108,7 +108,7 @@ impl StyleDeclaration: cmp::Eq { impl Attr: cmp::Eq { pure fn eq(&&other: Attr) -> bool { - match (self, other) { + match (copy self, copy other) { (Exists(a), Exists(b)) => a == b, (Exact(a, aa), Exact(b, bb)) @@ -126,7 +126,7 @@ impl Attr: cmp::Eq { impl Selector: cmp::Eq { pure fn eq(&&other: Selector) -> bool { // FIXME: Lots of copying here - match (self, other) { + match (copy self, copy other) { (Element(s_a, attrs_a), Element(s_b, attrs_b)) => s_a == s_b && attrs_a == attrs_b, (Child(s1a, s2a), Child(s1b, s2b)) diff --git a/src/servo/opts.rs b/src/servo/opts.rs index 7d1b36f7798..63a0003f36e 100644 --- a/src/servo/opts.rs +++ b/src/servo/opts.rs @@ -27,7 +27,7 @@ fn from_cmdline_args(args: ~[~str]) -> Opts { let opt_match = match getopts::getopts(args, opts) { result::Ok(m) => { copy m } - result::Err(f) => { fail getopts::fail_str(f) } + result::Err(f) => { fail getopts::fail_str(copy f) } }; let urls = if opt_match.free.is_empty() { diff --git a/src/servo/resource/image_cache_task.rs b/src/servo/resource/image_cache_task.rs index 81d8e296286..2023a407464 100644 --- a/src/servo/resource/image_cache_task.rs +++ b/src/servo/resource/image_cache_task.rs @@ -108,7 +108,7 @@ fn SyncImageCacheTask(resource_task: ResourceTask) -> ImageCacheTask { let msg = from_client.recv(); match msg { - GetImage(url, response) => inner_cache.send(WaitForImage(url, response)), + GetImage(url, response) => inner_cache.send(WaitForImage(copy url, response)), Exit(response) => { inner_cache.send(Exit(response)); break; diff --git a/src/servo/resource/resource_task.rs b/src/servo/resource/resource_task.rs index c1cd7fed549..7dc58137c25 100644 --- a/src/servo/resource/resource_task.rs +++ b/src/servo/resource/resource_task.rs @@ -28,7 +28,7 @@ enum ProgressMsg { impl ProgressMsg: cmp::Eq { pure fn eq(&&other: ProgressMsg) -> bool { - match (self, other) { + match (copy self, copy other) { (Payload(a), Payload(b)) => a == b, (Done(a), Done(b)) => a == b, @@ -92,7 +92,7 @@ struct ResourceManager { match self.get_loader_factory(url) { Some(loader_factory) => { - #debug("resource_task: loading url: %s", to_str(url)); + #debug("resource_task: loading url: %s", to_str(copy url)); loader_factory(url, progress_chan); } None => { diff --git a/src/servo/servo.rs b/src/servo/servo.rs index eef8462199f..19540bb0c9b 100644 --- a/src/servo/servo.rs +++ b/src/servo/servo.rs @@ -42,7 +42,7 @@ fn run_pipeline_screen(urls: ~[~str]) { for urls.each |filename| { let url = make_url(filename, None); - #debug["master: Sending url `%s`", url_to_str(url)]; + #debug["master: Sending url `%s`", url_to_str(copy url)]; engine_task = Some(EngineProto::client::LoadURL(swap_unwrap(&mut engine_task), url)); diff --git a/src/servo/text/native_font/quartz_native_font.rs b/src/servo/text/native_font/quartz_native_font.rs index 218d02b8dc2..4f5a6ef8758 100644 --- a/src/servo/text/native_font/quartz_native_font.rs +++ b/src/servo/text/native_font/quartz_native_font.rs @@ -54,7 +54,7 @@ fn create(buf: &~[u8]) -> Result { let fontprov = vec::as_buf(*buf, |cbuf, len| { CGDataProviderCreateWithData( null(), - unsafe { reinterpret_cast(cbuf) }, + unsafe { reinterpret_cast(&cbuf) }, len as size_t, null()) }); diff --git a/src/servo/text/shaper.rs b/src/servo/text/shaper.rs index eb5c1848855..84b8729186a 100644 --- a/src/servo/text/shaper.rs +++ b/src/servo/text/shaper.rs @@ -40,7 +40,7 @@ fn shape_text(font: &Font, text: ~str) -> ~[Glyph] unsafe { #debug("shaping text '%s'", text); let face_blob = vec::as_buf(*(*font).buf(), |buf, len| { - hb_blob_create(reinterpret_cast(buf), + hb_blob_create(reinterpret_cast(&buf), len as c_uint, HB_MEMORY_MODE_READONLY, null(), @@ -56,7 +56,7 @@ fn shape_text(font: &Font, text: ~str) -> ~[Glyph] unsafe { let funcs = hb_font_funcs_create(); hb_font_funcs_set_glyph_func(funcs, glyph_func, null(), null()); hb_font_funcs_set_glyph_h_advance_func(funcs, glyph_h_advance_func, null(), null()); - hb_font_set_funcs(hbfont, funcs, reinterpret_cast(addr_of(*font)), null()); + hb_font_set_funcs(hbfont, funcs, reinterpret_cast(&addr_of(*font)), null()); let buffer = hb_buffer_create(); @@ -109,7 +109,7 @@ extern fn glyph_func(_font: *hb_font_t, glyph: *mut hb_codepoint_t, _user_data: *c_void) -> hb_bool_t unsafe { - let font: *Font = reinterpret_cast(font_data); + let font: *Font = reinterpret_cast(&font_data); assert font.is_not_null(); return match (*font).glyph_index(unicode as char) { @@ -127,7 +127,7 @@ extern fn glyph_h_advance_func(_font: *hb_font_t, font_data: *c_void, glyph: hb_codepoint_t, _user_data: *c_void) -> hb_position_t unsafe { - let font: *Font = reinterpret_cast(font_data); + let font: *Font = reinterpret_cast(&font_data); assert font.is_not_null(); let h_advance = (*font).glyph_h_advance(glyph as uint);