comparison lcldec.c @ 9764:dd6bcbec3c24 libavcodec

Use srcptr_end variable to avoid having to update both srcptr and srclen.
author reimar
date Sun, 31 May 2009 10:26:58 +0000
parents d359d5ee74b9
children 350826aae685
comparison
equal deleted inserted replaced
9763:d359d5ee74b9 9764:dd6bcbec3c24
73 73
74 static unsigned int mszh_decomp(unsigned char * srcptr, int srclen, unsigned char * destptr, unsigned int destsize) 74 static unsigned int mszh_decomp(unsigned char * srcptr, int srclen, unsigned char * destptr, unsigned int destsize)
75 { 75 {
76 unsigned char *destptr_bak = destptr; 76 unsigned char *destptr_bak = destptr;
77 unsigned char *destptr_end = destptr + destsize; 77 unsigned char *destptr_end = destptr + destsize;
78 unsigned char *srcptr_end = srcptr + srclen;
78 unsigned char mask = 0; 79 unsigned char mask = 0;
79 unsigned char maskbit = 0; 80 unsigned char maskbit = 0;
80 unsigned int ofs, cnt; 81 unsigned int ofs, cnt;
81 82
82 while (srclen > 0 && destptr < destptr_end) { 83 while (srcptr < srcptr_end && destptr < destptr_end) {
83 if (maskbit == 0) { 84 if (maskbit == 0) {
84 mask = *srcptr++; 85 mask = *srcptr++;
85 maskbit = 8; 86 maskbit = 8;
86 srclen--;
87 continue; 87 continue;
88 } 88 }
89 if ((mask & (1 << (--maskbit))) == 0) { 89 if ((mask & (1 << (--maskbit))) == 0) {
90 if (destptr_end - destptr < 4) 90 if (destptr_end - destptr < 4)
91 break; 91 break;
92 memcpy(destptr, srcptr, 4); 92 memcpy(destptr, srcptr, 4);
93 srclen -= 4;
94 destptr += 4; 93 destptr += 4;
95 srcptr += 4; 94 srcptr += 4;
96 } else { 95 } else {
97 ofs = *srcptr++; 96 ofs = *srcptr++;
98 cnt = *srcptr++; 97 cnt = *srcptr++;
99 ofs += cnt * 256; 98 ofs += cnt * 256;
100 cnt = ((cnt >> 3) & 0x1f) + 1; 99 cnt = ((cnt >> 3) & 0x1f) + 1;
101 ofs &= 0x7ff; 100 ofs &= 0x7ff;
102 srclen -= 2;
103 cnt *= 4; 101 cnt *= 4;
104 if (destptr_end - destptr < cnt) { 102 if (destptr_end - destptr < cnt) {
105 cnt = destptr_end - destptr; 103 cnt = destptr_end - destptr;
106 } 104 }
107 for (; cnt > 0; cnt--) { 105 for (; cnt > 0; cnt--) {