do-while inside switch

Hi All,

Could anybody please explain to me, why this piece of code compiles.

void duff(register char *to, register char *from, register int count)
{
register int n=(count+7)/8;
switch(count%8){
case 0: do{ *to++ = *from++;
case 7: *to++ = *from++;
case 6: *to++ = *from++;
case 5: *to++ = *from++;
case 4: *to++ = *from++;
case 3: *to++ = *from++;
case 2: *to++ = *from++;
case 1: *to++ = *from++;
}while( --n >0);
}
}

Thank you!!!!

I'm sorry, I have to improve my C programming.
If there is someone who still thinking about this exercise, here is again, but now indented.

void duff(register char *to, register char *from, register int count)
{
register int n=(count+7)/8;
switch(count%8){
case 0:
do{
*to++ = *from++;
case 7: *to++ = *from++;
case 6: *to++ = *from++;
case 5: *to++ = *from++;
case 4: *to++ = *from++;
case 3: *to++ = *from++;
case 2: *to++ = *from++;
case 1: *to++ = *from++;
}while( --n >0);
}
}

"case" labels do not belong to the switch keyword.

Thanks!

Make use of Code Tags otherwise the source listings are really hard to follow...Obfuscated C code more so than others.