X-Git-Url: https://oss.titaniummirror.com/gitweb/?p=tinyos-2.x.git;a=blobdiff_plain;f=tos%2Flib%2Fserial%2FSerialDispatcherP.nc;h=fd2946b19ab33424ad271e944c92bd1980b85825;hp=85f13e0718b8445ffe4a0b29b68826d531fcd776;hb=e9bfab607e051bae6afb47b44892ce37541d1b44;hpb=adf1de6c009d13b7b52e68535c63b28f59c97400 diff --git a/tos/lib/serial/SerialDispatcherP.nc b/tos/lib/serial/SerialDispatcherP.nc index 85f13e07..fd2946b1 100644 --- a/tos/lib/serial/SerialDispatcherP.nc +++ b/tos/lib/serial/SerialDispatcherP.nc @@ -186,7 +186,7 @@ implementation { } bool isCurrentBufferLocked() { - return (receiveState.which)? receiveState.bufZeroLocked : receiveState.bufOneLocked; + return (receiveState.which)? receiveState.bufOneLocked : receiveState.bufZeroLocked; } void lockCurrentBuffer() { @@ -294,6 +294,9 @@ implementation { receiveTaskSize = recvIndex; receiveBufferSwap(); receiveState.state = RECV_STATE_IDLE; + } else { + // we can't deliver the packet, better free the current buffer. + unlockBuffer(receiveState.which); } } if (postsignalreceive){