]> git.sur5r.net Git - freertos/commitdiff
Remove reliance on strncpy() function.
authorrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 25 Jun 2013 14:03:02 +0000 (14:03 +0000)
committerrichardbarry <richardbarry@1d2547de-c912-0410-9cb9-b8ca96c0e9e2>
Tue, 25 Jun 2013 14:03:02 +0000 (14:03 +0000)
git-svn-id: https://svn.code.sf.net/p/freertos/code/trunk@1950 1d2547de-c912-0410-9cb9-b8ca96c0e9e2

FreeRTOS/Source/tasks.c

index 6232e7eb4329e6e6c4efdbfb66619ded365180e2..bc0a6e01a936901ec66e543eb422d65c9e8d2d63 100644 (file)
@@ -2249,14 +2249,25 @@ static portTASK_FUNCTION( prvIdleTask, pvParameters )
 \r
 static void prvInitialiseTCBVariables( tskTCB *pxTCB, const signed char * const pcName, unsigned portBASE_TYPE uxPriority, const xMemoryRegion * const xRegions, unsigned short usStackDepth )\r
 {\r
-       /* Store the function name in the TCB. */\r
-       #if configMAX_TASK_NAME_LEN > 1\r
+portBASE_TYPE x;\r
+\r
+       /* Store the task name in the TCB. */\r
+       for( x = 0; x < configMAX_TASK_NAME_LEN; x++ )\r
        {\r
-               /* Don't bring strncpy into the build unnecessarily. */\r
-               strncpy( ( char * ) pxTCB->pcTaskName, ( const char * ) pcName, ( unsigned short ) configMAX_TASK_NAME_LEN );\r
+               pxTCB->pcTaskName[ x ] = pcName[ x ];\r
+\r
+               /* Don't copy all configMAX_TASK_NAME_LEN if the string is shorter than\r
+               configMAX_TASK_NAME_LEN characters just in case the memory after the\r
+               string is not accessible (extremely unlikely). */\r
+               if( pcName[ x ] == 0x00 )\r
+               {\r
+                       break;\r
+               }\r
        }\r
-       #endif /* configMAX_TASK_NAME_LEN */\r
-       pxTCB->pcTaskName[ ( unsigned short ) configMAX_TASK_NAME_LEN - ( unsigned short ) 1 ] = ( signed char ) '\0';\r
+\r
+       /* Ensure the name string is terminated in the case that the string length\r
+       was greater or equal to configMAX_TASK_NAME_LEN. */\r
+       pxTCB->pcTaskName[ configMAX_TASK_NAME_LEN - 1 ] = ( signed char ) '\0';\r
 \r
        /* This is used as an array index so must ensure it's not too large.  First\r
        remove the privilege bit if one is present. */\r