about summary refs log tree commit diff
path: root/src/tools/miri/tests/pass-dep/wcslen.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/miri/tests/pass-dep/wcslen.rs')
-rw-r--r--src/tools/miri/tests/pass-dep/wcslen.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/tools/miri/tests/pass-dep/wcslen.rs b/src/tools/miri/tests/pass-dep/wcslen.rs
new file mode 100644
index 00000000000..c5c9d992479
--- /dev/null
+++ b/src/tools/miri/tests/pass-dep/wcslen.rs
@@ -0,0 +1,20 @@
+fn to_c_wchar_t_str(s: &str) -> Vec<libc::wchar_t> {
+    let mut r = Vec::<libc::wchar_t>::new();
+    for c in s.bytes() {
+        if c == 0 {
+            panic!("can't contain a null character");
+        }
+        if c >= 128 {
+            panic!("only ASCII supported");
+        }
+        r.push(c.into());
+    }
+    r.push(0);
+    r
+}
+
+pub fn main() {
+    let s = to_c_wchar_t_str("Rust");
+    let len = unsafe { libc::wcslen(s.as_ptr()) };
+    assert_eq!(len, 4);
+}