diff --git a/src/doc/nomicon/dropck.md b/src/doc/nomicon/dropck.md index 95bcdc02ba029..ad7c65032c769 100644 --- a/src/doc/nomicon/dropck.md +++ b/src/doc/nomicon/dropck.md @@ -220,6 +220,7 @@ checking the implicit assertion that no potentially expired data It is sometimes obvious that no such access can occur, like the case above. However, when dealing with a generic type parameter, such access can occur indirectly. Examples of such indirect access are: + * invoking a callback, * via a trait method call. diff --git a/src/doc/nomicon/leaking.md b/src/doc/nomicon/leaking.md index 1f72a4c172470..a5d5742a4c621 100644 --- a/src/doc/nomicon/leaking.md +++ b/src/doc/nomicon/leaking.md @@ -135,7 +135,7 @@ impl Rc { fn new(data: T) -> Self { unsafe { // Wouldn't it be nice if heap::allocate worked like this? - let ptr = heap::allocate>(); + let ptr = heap::allocate::>(); ptr::write(ptr, RcBox { data: data, ref_count: 1, diff --git a/src/libcore/ptr.rs b/src/libcore/ptr.rs index 8adbaf56f143c..f3ddb2a9fffe4 100644 --- a/src/libcore/ptr.rs +++ b/src/libcore/ptr.rs @@ -538,7 +538,7 @@ impl fmt::Pointer for Unique { /// building abstractions like `Rc` or `Arc`, which internally /// use raw pointers to manage the memory that they own. #[unstable(feature = "shared", reason = "needs an RFC to flesh out design", - issue = "0")] + issue = "27730")] pub struct Shared { pointer: NonZero<*const T>, // NOTE: this marker has no consequences for variance, but is necessary @@ -551,15 +551,15 @@ pub struct Shared { /// `Shared` pointers are not `Send` because the data they reference may be aliased. // NB: This impl is unnecessary, but should provide better error messages. -#[unstable(feature = "shared", issue = "0")] +#[unstable(feature = "shared", issue = "27730")] impl !Send for Shared { } /// `Shared` pointers are not `Sync` because the data they reference may be aliased. // NB: This impl is unnecessary, but should provide better error messages. -#[unstable(feature = "shared", issue = "0")] +#[unstable(feature = "shared", issue = "27730")] impl !Sync for Shared { } -#[unstable(feature = "shared", issue = "0")] +#[unstable(feature = "shared", issue = "27730")] impl Shared { /// Creates a new `Shared`. pub unsafe fn new(ptr: *mut T) -> Self { @@ -567,21 +567,21 @@ impl Shared { } } -#[unstable(feature = "shared", issue = "0")] +#[unstable(feature = "shared", issue = "27730")] impl Clone for Shared { fn clone(&self) -> Self { *self } } -#[unstable(feature = "shared", issue = "0")] +#[unstable(feature = "shared", issue = "27730")] impl Copy for Shared { } #[cfg(not(stage0))] // remove cfg after new snapshot -#[unstable(feature = "shared", issue = "0")] +#[unstable(feature = "shared", issue = "27730")] impl CoerceUnsized> for Shared where T: Unsize { } -#[unstable(feature = "shared", issue = "0")] +#[unstable(feature = "shared", issue = "27730")] impl Deref for Shared { type Target = *mut T; @@ -591,7 +591,7 @@ impl Deref for Shared { } } -#[unstable(feature = "shared", issue = "0")] +#[unstable(feature = "shared", issue = "27730")] impl fmt::Pointer for Shared { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { fmt::Pointer::fmt(&*self.pointer, f) diff --git a/src/libstd/process.rs b/src/libstd/process.rs index 6e3c5eaf217f6..9d03022bb84e7 100644 --- a/src/libstd/process.rs +++ b/src/libstd/process.rs @@ -625,8 +625,8 @@ mod tests { drop(p.wait()); } - #[cfg(unix)] #[cfg(all(unix, not(target_os="android")))] + #[test] fn signal_reported_right() { use os::unix::process::ExitStatusExt; diff --git a/src/test/run-make/linker-output-non-utf8/Makefile b/src/test/run-make/linker-output-non-utf8/Makefile new file mode 100644 index 0000000000000..08cfa333010b8 --- /dev/null +++ b/src/test/run-make/linker-output-non-utf8/Makefile @@ -0,0 +1,12 @@ +-include ../tools.mk + +# Make sure we don't ICE if the linker prints a non-UTF-8 error message. + +# The zzz it to allow humans to tab complete or glob this thing. +bad_dir := $(TMPDIR)/zzz$$'\xff' + +all: + $(RUSTC) library.rs + mkdir $(bad_dir) + mv $(call STATICLIB,library) $(bad_dir) + LIBRARY_PATH=$(bad_dir) $(RUSTC) exec.rs 2>&1 | grep this_symbol_not_defined diff --git a/src/test/run-make/linker-output-non-utf8/exec.rs b/src/test/run-make/linker-output-non-utf8/exec.rs new file mode 100644 index 0000000000000..1c03eb479fdea --- /dev/null +++ b/src/test/run-make/linker-output-non-utf8/exec.rs @@ -0,0 +1,16 @@ +// Copyright 2015 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#[link(name="library")] +extern "C" { + fn foo(); +} + +fn main() { unsafe { foo(); } } diff --git a/src/test/run-make/linker-output-non-utf8/library.rs b/src/test/run-make/linker-output-non-utf8/library.rs new file mode 100644 index 0000000000000..194be26424ad8 --- /dev/null +++ b/src/test/run-make/linker-output-non-utf8/library.rs @@ -0,0 +1,20 @@ +// Copyright 2015 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![crate_type = "staticlib"] + +extern "C" { + fn this_symbol_not_defined(); +} + +#[no_mangle] +pub extern "C" fn foo() { + unsafe { this_symbol_not_defined(); } +}