File tree 1 file changed +13
-4
lines changed
1 file changed +13
-4
lines changed Original file line number Diff line number Diff line change 1
1
use crate :: exception:: Exception ;
2
- use crate :: rust_str:: RustStr ;
3
2
use alloc:: boxed:: Box ;
4
3
use alloc:: string:: { String , ToString } ;
5
4
use core:: fmt:: Display ;
6
- use core:: ptr;
5
+ use core:: ptr:: { self , NonNull } ;
7
6
use core:: result:: Result as StdResult ;
8
7
use core:: slice;
9
8
use core:: str;
10
9
10
+ #[ repr( C ) ]
11
+ #[ derive( Copy , Clone ) ]
12
+ struct PtrLen {
13
+ ptr : NonNull < u8 > ,
14
+ len : usize ,
15
+ }
16
+
11
17
#[ repr( C ) ]
12
18
pub union Result {
13
- err : RustStr ,
19
+ err : PtrLen ,
14
20
ok : * const u8 , // null
15
21
}
16
22
@@ -41,7 +47,10 @@ unsafe fn to_c_error(msg: String) -> Result {
41
47
let copy = error ( ptr, len) ;
42
48
let slice = slice:: from_raw_parts ( copy, len) ;
43
49
let string = str:: from_utf8_unchecked ( slice) ;
44
- let err = RustStr :: from ( string) ;
50
+ let err = PtrLen {
51
+ ptr : NonNull :: from ( string) . cast :: < u8 > ( ) ,
52
+ len : string. len ( ) ,
53
+ } ;
45
54
Result { err }
46
55
}
47
56
You can’t perform that action at this time.
0 commit comments