]> git.sur5r.net Git - freertos/commitdiff
Fix regressions introduced by introduction of configMESSAGE_BUFFER_LENGTH_TYPE consta...
authorrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Thu, 15 Mar 2018 18:31:02 +0000 (18:31 +0000)
committerrtel <rtel@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Thu, 15 Mar 2018 18:31:02 +0000 (18:31 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@2536 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

FreeRTOS/Demo/Common/Minimal/MessageBufferDemo.c
FreeRTOS/Source/stream_buffer.c

index 4422b2bd5109b9881278da5c97eef2145afc17a1..819600db118ba0253d422c4e283d0b4d9cb70de2 100644 (file)
@@ -41,7 +41,7 @@
 #define mbMESSAGE_BUFFER_LENGTH_BYTES  ( ( size_t ) 50 )\r
 \r
 /* The number of additional bytes used to store the length of each message. */\r
-#define mbBYTES_TO_STORE_MESSAGE_LENGTH ( sizeof( size_t ) )\r
+#define mbBYTES_TO_STORE_MESSAGE_LENGTH ( sizeof( configMESSAGE_BUFFER_LENGTH_TYPE ) )\r
 \r
 /* Start and end ASCII characters used in messages sent to the buffers. */\r
 #define mbASCII_SPACE                                  32\r
@@ -191,7 +191,8 @@ UBaseType_t uxOriginalPriority;
        additional 4 bytes are added to hold the item's size.  That means adding\r
        6 bytes to the buffer will actually add 10 bytes to the buffer.  Therefore,\r
        with a 50 byte buffer, a maximum of 5 6 bytes items can be added before the\r
-       buffer is completely full. */\r
+       buffer is completely full.  NOTE:  The numbers in this paragraph assume\r
+       sizeof( configMESSAGE_BUFFER_LENGTH_TYPE ) == 4. */\r
        for( xItem = 0; xItem < xMax6ByteMessages; xItem++ )\r
        {\r
                configASSERT( xMessageBufferIsFull( xMessageBuffer ) == pdFALSE );\r
@@ -377,15 +378,21 @@ UBaseType_t uxOriginalPriority;
        xReturned = xMessageBufferSend( xMessageBuffer, ( const void * ) pc55ByteString, mbMESSAGE_BUFFER_LENGTH_BYTES, mbDONT_BLOCK );\r
        configASSERT( xReturned == 0 );\r
        ( void ) xReturned; /* In case configASSERT() is not defined. */\r
-       xReturned = xMessageBufferSend( xMessageBuffer, ( const void * ) pc55ByteString, mbMESSAGE_BUFFER_LENGTH_BYTES - 1, mbDONT_BLOCK );\r
-       configASSERT( xReturned == 0 );\r
-       ( void ) xReturned; /* In case configASSERT() is not defined. */\r
-       xReturned = xMessageBufferSend( xMessageBuffer, ( const void * ) pc55ByteString, mbMESSAGE_BUFFER_LENGTH_BYTES - 2, mbDONT_BLOCK );\r
-       configASSERT( xReturned == 0 );\r
-       ( void ) xReturned; /* In case configASSERT() is not defined. */\r
-       xReturned = xMessageBufferSend( xMessageBuffer, ( const void * ) pc55ByteString, mbMESSAGE_BUFFER_LENGTH_BYTES - 3, mbDONT_BLOCK );\r
-       configASSERT( xReturned == 0 );\r
-       ( void ) xReturned; /* In case configASSERT() is not defined. */\r
+       #ifndef configMESSAGE_BUFFER_LENGTH_TYPE\r
+       {\r
+               /* The following will fail if configMESSAGE_BUFFER_LENGTH_TYPE is set\r
+               to a non 32-bit type. */\r
+               xReturned = xMessageBufferSend( xMessageBuffer, ( const void * ) pc55ByteString, mbMESSAGE_BUFFER_LENGTH_BYTES - 1, mbDONT_BLOCK );\r
+               configASSERT( xReturned == 0 );\r
+               ( void ) xReturned; /* In case configASSERT() is not defined. */\r
+               xReturned = xMessageBufferSend( xMessageBuffer, ( const void * ) pc55ByteString, mbMESSAGE_BUFFER_LENGTH_BYTES - 2, mbDONT_BLOCK );\r
+               configASSERT( xReturned == 0 );\r
+               ( void ) xReturned; /* In case configASSERT() is not defined. */\r
+               xReturned = xMessageBufferSend( xMessageBuffer, ( const void * ) pc55ByteString, mbMESSAGE_BUFFER_LENGTH_BYTES - 3, mbDONT_BLOCK );\r
+               configASSERT( xReturned == 0 );\r
+               ( void ) xReturned; /* In case configASSERT() is not defined. */\r
+       }\r
+       #endif\r
 \r
        /* Don't expect any messages to be available as the above were too large to\r
        get written. */\r
index ed8baef91b1f0c95fa9b245a0bf7282d1132bfa8..1f053b7dde64fe83867b07d2cf0bfe15719ba038 100644 (file)
@@ -799,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
@@ -815,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
@@ -901,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
@@ -909,10 +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
-               /* Ensure xNextMessageLength is cleared to 0 in case\r
-               sizeof( configMESSAGE_BUFFER_LENGTH_TYPE ) != sizeof( size_t ). */\r
-               xNextMessageLength = 0;\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