From 872f1e4e40587c940be91bb3995c6616f8f26b0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kornel=20Lesi=C5=84ski?= <kornel@cloudflare.com> Date: Tue, 2 Apr 2019 16:52:38 +0200 Subject: [PATCH] Support c_char sign differences --- Cargo.toml | 2 +- src/locale.rs | 35 ++++++++++++++++++----------------- src/mlu.rs | 2 +- src/namedcolorlist.rs | 11 ++++++----- 4 files changed, 26 insertions(+), 24 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 109d3b9..e2fcd31 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,7 @@ homepage = "https://crates.rs/crates/lcms2" documentation = "https://kornelski.github.io/rust-lcms2/lcms2/" repository = "https://github.com/kornelski/rust-lcms2.git" categories = ["multimedia::images", "api-bindings"] -version = "5.1.2" +version = "5.1.3" edition = "2018" [dependencies] diff --git a/src/locale.rs b/src/locale.rs index 9ffc359..edc25e5 100644 --- a/src/locale.rs +++ b/src/locale.rs @@ -1,3 +1,4 @@ +use std::os::raw::c_char; use std::cmp; use std::fmt; use std::fmt::Write; @@ -5,8 +6,8 @@ use std::fmt::Write; /// Language code from ISO-639/2 and region code from ISO-3166. #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd)] pub struct Locale { - language: [i8; 3], - country: [i8; 3], + language: [c_char; 3], + country: [c_char; 3], } impl Locale { @@ -19,10 +20,10 @@ impl Locale { country: [0; 3], }; for (c, s) in locale.language.iter_mut().zip(language_str.bytes().take(2)) { - *c = s as i8; + *c = s as c_char; } for (c, s) in locale.country.iter_mut().zip(country_str.bytes().take(2)) { - *c = s as i8; + *c = s as c_char; } locale } @@ -35,20 +36,20 @@ impl Locale { } } - pub(crate) fn language_ptr(&self) -> *const i8 { + pub(crate) fn language_ptr(&self) -> *const c_char { &self.language as _ } - pub(crate) fn country_ptr(&self) -> *const i8 { + pub(crate) fn country_ptr(&self) -> *const c_char { &self.country as _ } - pub(crate) fn language_ptr_mut(&mut self) -> *mut i8 { - &self.language as *const i8 as _ + pub(crate) fn language_ptr_mut(&mut self) -> *mut c_char { + &self.language as *const c_char as _ } - pub(crate) fn country_ptr_mut(&mut self) -> *mut i8 { - &self.country as *const i8 as _ + pub(crate) fn country_ptr_mut(&mut self) -> *mut c_char { + &self.country as *const c_char as _ } } @@ -94,20 +95,20 @@ fn locale() { assert_eq!([0i8; 3], l.country); let l = Locale::new("Ab"); - assert_eq!(['A' as i8, 'b' as i8, 0], l.language); + assert_eq!(['A' as c_char, 'b' as c_char, 0], l.language); assert_eq!([0i8; 3], l.country); let l = Locale::new("Ab-X"); - assert_eq!(['A' as i8, 'b' as i8, 0], l.language); - assert_eq!(['X' as i8, 0, 0], l.country); + assert_eq!(['A' as c_char, 'b' as c_char, 0], l.language); + assert_eq!(['X' as c_char, 0, 0], l.country); let l = Locale::new("overlong"); - assert_eq!(['o' as i8, 'v' as i8, 0], l.language); - assert_eq!(['r' as i8, 'l' as i8, 0], l.country); + assert_eq!(['o' as c_char, 'v' as c_char, 0], l.language); + assert_eq!(['r' as c_char, 'l' as c_char, 0], l.country); unsafe { - assert_eq!('o' as i8, *l.language_ptr()); + assert_eq!('o' as c_char, *l.language_ptr()); } unsafe { - assert_eq!('r' as i8, *l.country_ptr()); + assert_eq!('r' as c_char, *l.country_ptr()); } } diff --git a/src/mlu.rs b/src/mlu.rs index 199f2b5..f3646c7 100644 --- a/src/mlu.rs +++ b/src/mlu.rs @@ -71,7 +71,7 @@ impl MLURef { ffi::cmsMLUgetASCII(self.as_ptr(), locale.language_ptr(), locale.country_ptr(), - buf[..].as_ptr() as *mut i8, len); + buf[..].as_ptr() as *mut _, len); if let Some(0) = buf.pop() { // terminating zero for c in &mut buf { if *c > 127 {*c = b'?'} diff --git a/src/namedcolorlist.rs b/src/namedcolorlist.rs index 12b8e9e..34b4f8e 100644 --- a/src/namedcolorlist.rs +++ b/src/namedcolorlist.rs @@ -1,6 +1,7 @@ use super::*; use std::fmt; use std::ptr; +use std::os::raw::c_char; use foreign_types::ForeignTypeRef; use std::ffi::{CStr, CString}; @@ -30,8 +31,8 @@ impl NamedColorList { Error::if_null(ffi::cmsAllocNamedColorList(ptr::null_mut(), spot_colors as u32, colorant_count as u32, - prefix.as_ptr(), - suffix.as_ptr())) + prefix.as_ptr() as _, + suffix.as_ptr() as _)) // char sign difference } } } @@ -50,9 +51,9 @@ impl NamedColorListRef { /// Get color info fn get(&self, index: usize) -> Option<NamedColorInfo> { - let mut name = [0i8; 256]; - let mut prefix = [0i8; 33]; - let mut suffix = [0i8; 33]; + let mut name = [0 as c_char; 256]; + let mut prefix = [0 as c_char; 33]; + let mut suffix = [0 as c_char; 33]; let mut pcs = [0u16; 3]; let mut colorant = [0u16; 16]; -- GitLab