Eventuell so?

Code:
// Send /////////////////////////////////////////////////////////////
int RS232_send(char *c, int length, int blocking) {
	int i=0;
	for (i=0; i < length;i++) {
		if ((cWriteBufferSize + WritePointer1 - WritePointer0) % cWriteBufferSize > 
			(cWriteBufferSize - 2)) {
			if (blocking) {
				while((cWriteBufferSize + WritePointer1 - WritePointer0) % cWriteBufferSize > 
					(cWriteBufferSize - 2));
			}
			else {
				goto End;
			}
		}
		TXComplete = cTXComplete;
		asm("cli");
		WriteBuffer[WritePointer1++] = c[i];
		if (WritePointer1 > cWriteBufferSize - 1) WritePointer1 = 0;
		asm("sei");
		UCSRB = (1<<TXEN) | (1<<UDRIE);
	}
	End:return i;	
}