File tree Expand file tree Collapse file tree 2 files changed +15
-6
lines changed
Expand file tree Collapse file tree 2 files changed +15
-6
lines changed Original file line number Diff line number Diff line change @@ -910,10 +910,15 @@ static int freenect_fetch_zero_plane_info(freenect_device *dev)
910910 }
911911
912912 memcpy (& (dev -> registration .zero_plane_info ), reply + 94 , sizeof (dev -> registration .zero_plane_info ));
913- dev -> registration .zero_plane_info .dcmos_emitter_dist = * ((float * )(& fn_le32 (* ((uint32_t * )(& dev -> registration .zero_plane_info .dcmos_emitter_dist )))));
914- dev -> registration .zero_plane_info .dcmos_rcmos_dist = * ((float * )(& fn_le32 (* ((uint32_t * )(& dev -> registration .zero_plane_info .dcmos_rcmos_dist )))));
915- dev -> registration .zero_plane_info .reference_distance = * ((float * )(& fn_le32 (* ((uint32_t * )(& dev -> registration .zero_plane_info .reference_distance )))));
916- dev -> registration .zero_plane_info .reference_pixel_size = * ((float * )(& fn_le32 (* ((uint32_t * )(& dev -> registration .zero_plane_info .reference_pixel_size )))));
913+ uint32_t temp ;
914+ temp = fn_le32 (* ((uint32_t * )(& dev -> registration .zero_plane_info .dcmos_emitter_dist )));
915+ dev -> registration .zero_plane_info .dcmos_emitter_dist = * ((float * )(& temp ));
916+ temp = fn_le32 (* ((uint32_t * )(& dev -> registration .zero_plane_info .dcmos_rcmos_dist )));
917+ dev -> registration .zero_plane_info .dcmos_rcmos_dist = * ((float * )(& temp ));
918+ temp = fn_le32 (* ((uint32_t * )(& dev -> registration .zero_plane_info .reference_distance )));
919+ dev -> registration .zero_plane_info .reference_distance = * ((float * )(& temp ));
920+ temp = fn_le32 (* ((uint32_t * )(& dev -> registration .zero_plane_info .reference_pixel_size )));
921+ dev -> registration .zero_plane_info .reference_pixel_size = * ((float * )(& temp ));
917922
918923 // WTF is all this data? it's way bigger than sizeof(XnFixedParams)...
919924 FN_SPEW ("dcmos_emitter_distance: %f\n" , dev -> registration .zero_plane_info .dcmos_emitter_dist );
Original file line number Diff line number Diff line change @@ -89,12 +89,16 @@ static inline uint32_t fn_le32(uint32_t d)
8989static inline int16_t fn_le16s (int16_t s )
9090{
9191 // reinterpret cast to unsigned, use the normal fn_le16, and then reinterpret cast back
92- return * ((int16_t * )(& fn_le16 (* ((uint16_t * )(& s )))));
92+ uint16_t temp = (* (uint16_t * )(& s ));
93+ temp = fn_le16 (temp );
94+ return * ((int16_t * )(& temp ));
9395}
9496static inline int32_t fn_le32s (int32_t s )
9597{
9698 // reinterpret cast to unsigned, use the normal fn_le32, and then reinterpret cast back
97- return * ((int32_t * )(& fn_le32 (* ((uint32_t * )(& s )))));
99+ uint32_t temp = (* (uint32_t * )(& s ));
100+ temp = fn_le32 (temp );
101+ return * ((int32_t * )(& temp ));
98102}
99103#else
100104#define fn_le16 (x ) (x)
You can’t perform that action at this time.
0 commit comments