]> git.sur5r.net Git - freertos/blobdiff - FreeRTOS/Source/stream_buffer.c
Fix regressions introduced by introduction of configMESSAGE_BUFFER_LENGTH_TYPE consta...
[freertos] / FreeRTOS / Source / stream_buffer.c
index 9e518907adffa68f9ce855825e8a1f86a179e6ce..1f053b7dde64fe83867b07d2cf0bfe15719ba038 100644 (file)
@@ -129,7 +129,7 @@ that uses task notifications. */
 /*lint -restore (9026) */\r
 \r
 /* The number of bytes used to hold the length of a message in the buffer. */\r
-#define sbBYTES_TO_STORE_MESSAGE_LENGTH ( sizeof( size_t ) )\r
+#define sbBYTES_TO_STORE_MESSAGE_LENGTH ( sizeof( configMESSAGE_BUFFER_LENGTH_TYPE ) )\r
 \r
 /* Bits stored in the ucFlags field of the stream buffer. */\r
 #define sbFLAGS_IS_MESSAGE_BUFFER              ( ( uint8_t ) 1 ) /* Set if the stream buffer was created as a message buffer, in which case it holds discrete messages rather than a stream. */\r
@@ -504,6 +504,9 @@ TimeOut_t xTimeOut;
        if( ( pxStreamBuffer->ucFlags & sbFLAGS_IS_MESSAGE_BUFFER ) != ( uint8_t ) 0 )\r
        {\r
                xRequiredSpace += sbBYTES_TO_STORE_MESSAGE_LENGTH;\r
+\r
+               /* Overflow? */\r
+               configASSERT( xRequiredSpace > xDataLengthBytes );\r
        }\r
        else\r
        {\r
@@ -796,6 +799,7 @@ size_t xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer )
 {\r
 StreamBuffer_t * const pxStreamBuffer = ( StreamBuffer_t * ) xStreamBuffer; /*lint !e9087 !e9079 Safe cast as StreamBufferHandle_t is opaque Streambuffer_t. */\r
 size_t xReturn, xBytesAvailable, xOriginalTail;\r
+configMESSAGE_BUFFER_LENGTH_TYPE xTempReturn;\r
 \r
        configASSERT( pxStreamBuffer );\r
 \r
@@ -812,7 +816,8 @@ size_t xReturn, xBytesAvailable, xOriginalTail;
                        returned to its prior state as the message is not actually being\r
                        removed from the buffer. */\r
                        xOriginalTail = pxStreamBuffer->xTail;\r
-                       ( void ) prvReadBytesFromBuffer( pxStreamBuffer, ( uint8_t * ) &xReturn, sbBYTES_TO_STORE_MESSAGE_LENGTH, xBytesAvailable );\r
+                       ( void ) prvReadBytesFromBuffer( pxStreamBuffer, ( uint8_t * ) &xTempReturn, sbBYTES_TO_STORE_MESSAGE_LENGTH, xBytesAvailable );\r
+                       xReturn = ( size_t ) xTempReturn;\r
                        pxStreamBuffer->xTail = xOriginalTail;\r
                }\r
                else\r
@@ -898,6 +903,7 @@ static size_t prvReadMessageFromBuffer( StreamBuffer_t *pxStreamBuffer,
                                                                                size_t xBytesToStoreMessageLength )\r
 {\r
 size_t xOriginalTail, xReceivedLength, xNextMessageLength;\r
+configMESSAGE_BUFFER_LENGTH_TYPE xTempNextMessageLength;\r
 \r
        if( xBytesToStoreMessageLength != ( size_t ) 0 )\r
        {\r
@@ -906,7 +912,8 @@ size_t xOriginalTail, xReceivedLength, xNextMessageLength;
                returned to its prior state if the length of the message is too\r
                large for the provided buffer. */\r
                xOriginalTail = pxStreamBuffer->xTail;\r
-               ( void ) prvReadBytesFromBuffer( pxStreamBuffer, ( uint8_t * ) &xNextMessageLength, xBytesToStoreMessageLength, xBytesAvailable );\r
+               ( void ) prvReadBytesFromBuffer( pxStreamBuffer, ( uint8_t * ) &xTempNextMessageLength, xBytesToStoreMessageLength, xBytesAvailable );\r
+               xNextMessageLength = ( size_t ) xTempNextMessageLength;\r
 \r
                /* Reduce the number of bytes available by the number of bytes just\r
                read out. */\r