]> git.lizzy.rs Git - rust.git/commitdiff
libextra: Use from_be32 instead of bswap32 in vuint_at()
authorCarl-Anton Ingmarsson <mail@carlanton.se>
Wed, 1 Jan 2014 18:09:10 +0000 (19:09 +0100)
committerCarl-Anton Ingmarsson <mail@carlanton.se>
Wed, 1 Jan 2014 21:27:49 +0000 (22:27 +0100)
Also use the fast version of vuint_at() on all architectures since it now
works on both big and little endian architectures.

src/libextra/ebml.rs

index 27d7a1dee99227e48b0e343f5158e8dcf5399948..b63f7e495b90a5cd27dab91b4d37b76764dea665 100644 (file)
@@ -122,11 +122,9 @@ fn vuint_at_slow(data: &[u8], start: uint) -> Res {
         fail!("vint too big");
     }
 
-    #[cfg(target_arch = "x86")]
-    #[cfg(target_arch = "x86_64")]
     pub fn vuint_at(data: &[u8], start: uint) -> Res {
         use std::ptr::offset;
-        use std::unstable::intrinsics::bswap32;
+        use std::unstable::intrinsics::from_be32;
 
         if data.len() - start < 4 {
             return vuint_at_slow(data, start);
@@ -136,7 +134,7 @@ pub fn vuint_at(data: &[u8], start: uint) -> Res {
             let (ptr, _): (*u8, uint) = transmute(data);
             let ptr = offset(ptr, start as int);
             let ptr: *i32 = transmute(ptr);
-            let val = bswap32(*ptr);
+            let val = from_be32(*ptr);
             let val: u32 = transmute(val);
             if (val & 0x80000000) != 0 {
                 Res {
@@ -162,11 +160,6 @@ pub fn vuint_at(data: &[u8], start: uint) -> Res {
         }
     }
 
-    #[cfg(not(target_arch = "x86"), not(target_arch = "x86_64"))]
-    pub fn vuint_at(data: &[u8], start: uint) -> Res {
-        vuint_at_slow(data, start)
-    }
-
     pub fn Doc<'a>(data: &'a [u8]) -> Doc<'a> {
         Doc { data: data, start: 0u, end: data.len() }
     }