 if(dev->frame_size != (*f)->buf.length){ em2820_err("frame_size %i and buf.length %i are different!!!\n",dev->frame_size,(*f)->buf.length); return; } 
static inline void em2820_isoc_video_copy(struct em2820 *dev,					  struct em2820_frame_t **f, unsigned char *buf, int len){	void *fieldstart, *startwrite, *startread;	int linesdone, currlinedone, offset, lencopy,remain;	if ((*f)->fieldbytesused + len > dev->field_size)		len =dev->field_size - (*f)->fieldbytesused;	remain = len;	startread = buf + 4;	if ((*f)->top_field)		fieldstart = (*f)->bufmem;	else		fieldstart = (*f)->bufmem + dev->bytesperline;	linesdone = (*f)->fieldbytesused / dev->bytesperline;	currlinedone = (*f)->fieldbytesused % dev->bytesperline;	offset = linesdone * dev->bytesperline * 2 + currlinedone;	startwrite = fieldstart + offset;	lencopy = dev->bytesperline - currlinedone;	lencopy = lencopy > remain ? remain : lencopy;	memcpy(startwrite, startread, lencopy);	remain -= lencopy;	while (remain > 0) {		startwrite += lencopy + dev->bytesperline;		startread += lencopy;		if (dev->bytesperline > remain)			lencopy = remain;		else			lencopy = dev->bytesperline;		memcpy(startwrite, startread, lencopy);		remain -= lencopy;	}	(*f)->fieldbytesused += len;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/596d92d5128d308b5a79f21c3e72c87f5fc7e58b/em28xx-core.c/buggy/drivers/media/video/em28xx/em28xx-core.c