@@ -48,6 +48,7 @@ use log::debug;
48
48
use mozjs_sys:: jsgc:: Rooted ;
49
49
use std:: borrow:: Cow ;
50
50
use std:: mem;
51
+ use std:: ptr:: NonNull ;
51
52
use std:: rc:: Rc ;
52
53
use std:: { ptr, slice} ;
53
54
@@ -527,11 +528,11 @@ impl FromJSValConvertible for f64 {
527
528
528
529
/// Converts a `JSString`, encoded in "Latin1" (i.e. U+0000-U+00FF encoded as 0x00-0xFF) into a
529
530
/// `String`.
530
- pub unsafe fn latin1_to_string ( cx : * mut JSContext , s : * mut JSString ) -> String {
531
- assert ! ( JS_DeprecatedStringHasLatin1Chars ( s) ) ;
531
+ pub unsafe fn latin1_to_string ( cx : * mut JSContext , s : NonNull < JSString > ) -> String {
532
+ assert ! ( JS_DeprecatedStringHasLatin1Chars ( s. as_ptr ( ) ) ) ;
532
533
533
534
let mut length = 0 ;
534
- let chars = JS_GetLatin1StringCharsAndLength ( cx, ptr:: null ( ) , s, & mut length) ;
535
+ let chars = JS_GetLatin1StringCharsAndLength ( cx, ptr:: null ( ) , s. as_ptr ( ) , & mut length) ;
535
536
assert ! ( !chars. is_null( ) ) ;
536
537
537
538
let chars = slice:: from_raw_parts ( chars, length as usize ) ;
@@ -541,13 +542,13 @@ pub unsafe fn latin1_to_string(cx: *mut JSContext, s: *mut JSString) -> String {
541
542
}
542
543
543
544
/// Converts a `JSString` into a `String`, regardless of used encoding.
544
- pub unsafe fn jsstr_to_string ( cx : * mut JSContext , jsstr : * mut JSString ) -> String {
545
- if JS_DeprecatedStringHasLatin1Chars ( jsstr) {
545
+ pub unsafe fn jsstr_to_string ( cx : * mut JSContext , jsstr : NonNull < JSString > ) -> String {
546
+ if JS_DeprecatedStringHasLatin1Chars ( jsstr. as_ptr ( ) ) {
546
547
return latin1_to_string ( cx, jsstr) ;
547
548
}
548
549
549
550
let mut length = 0 ;
550
- let chars = JS_GetTwoByteStringCharsAndLength ( cx, ptr:: null ( ) , jsstr, & mut length) ;
551
+ let chars = JS_GetTwoByteStringCharsAndLength ( cx, ptr:: null ( ) , jsstr. as_ptr ( ) , & mut length) ;
551
552
assert ! ( !chars. is_null( ) ) ;
552
553
let char_vec = slice:: from_raw_parts ( chars, length as usize ) ;
553
554
String :: from_utf16_lossy ( char_vec)
@@ -588,10 +589,10 @@ impl FromJSValConvertible for String {
588
589
_: ( ) ,
589
590
) -> Result < ConversionResult < String > , ( ) > {
590
591
let jsstr = ToString ( cx, value) ;
591
- if jsstr. is_null ( ) {
592
+ let Some ( jsstr) = NonNull :: new ( jsstr ) else {
592
593
debug ! ( "ToString failed" ) ;
593
594
return Err ( ( ) ) ;
594
- }
595
+ } ;
595
596
Ok ( jsstr_to_string ( cx, jsstr) ) . map ( ConversionResult :: Success )
596
597
}
597
598
}
0 commit comments