From 0a3c8abe957e7ec8236dec162958ce79388ec520 Mon Sep 17 00:00:00 2001 From: jD91mZM2 <me@krake.one> Date: Fri, 22 Jun 2018 14:49:02 +0200 Subject: [PATCH] Fix setlocale return value --- src/locale/src/lib.rs | 8 +++++--- tests/locale.c | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/locale/src/lib.rs b/src/locale/src/lib.rs index 17e438e61..f71380b35 100644 --- a/src/locale/src/lib.rs +++ b/src/locale/src/lib.rs @@ -9,6 +9,7 @@ use core::ptr; use platform::types::*; const EMPTY_PTR: *const c_char = "\0" as *const _ as *const c_char; +static mut C_LOCALE: [c_char; 2] = [b'C' as c_char, 0]; #[repr(C)] #[no_mangle] @@ -61,10 +62,11 @@ pub extern "C" fn localeconv() -> *const lconv { } #[no_mangle] -pub extern "C" fn setlocale(_option: c_int, val: *const c_char) -> *const c_char { +pub unsafe extern "C" fn setlocale(_option: c_int, val: *const c_char) -> *mut c_char { if val.is_null() { - return "C\0".as_ptr() as *const c_char; + // Can't use string`` + return C_LOCALE.as_mut_ptr() as *mut c_char; } // TODO actually implement - ptr::null() + ptr::null_mut() } diff --git a/tests/locale.c b/tests/locale.c index eba2ecede..9358bc555 100644 --- a/tests/locale.c +++ b/tests/locale.c @@ -4,7 +4,7 @@ int main() { // TODO: Implement locale properly and test it here - const char* val = setlocale(LC_ALL, NULL); + char* val = setlocale(LC_ALL, NULL); if (strcmp(val, "C") == 0) { puts("success!"); } else { -- GitLab