From: Chris R. <cj....@nt...> - 2002-03-29 20:06:39
|
Hi, I think this is a better hack-around for my segfault problem in libmpeg2. Of course, it doesn't tackle the *real* problem of why these pointers are NULL in the first place, but I can at least watch my DVD now. Chris --- xine-lib/src/libmpeg2/slice.c.orig Fri Mar 29 17:30:59 2002 +++ xine-lib/src/libmpeg2/slice.c Fri Mar 29 17:52:39 2002 @@ -1019,7 +1019,7 @@ #define MOTION_Y(table,offset_x,offset_y,motion_x,motion_y, \ dest,src,offset_dest,offset_src,stride,height) \ -do { \ +if (src[0]) { \ int xy_half; \ int total_offset; \ \ @@ -1028,11 +1028,11 @@ offset_x + (motion_x >> 1) + (offset_src)); \ table[xy_half] (dest[0] + offset_x + (offset_dest), \ src[0] + total_offset, stride, height); \ -} while (0) +} else ; #define MOTION_UV(table,offset_x,offset_y,motion_x,motion_y, \ dest,src,offset_dest,offset_src,stride,height) \ -do { \ +if (src[1] && src[2]) { \ int xy_half; \ int total_offset; \ \ @@ -1043,7 +1043,7 @@ src[1] + total_offset, stride, height); \ table[4+xy_half] (dest[2] + (offset_x >> 1) + (offset_dest), \ src[2] + total_offset, stride, height); \ -} while (0) +} else ; static inline void motion_block (void (** table) (uint8_t *, uint8_t *, int32_t, int32_t), |