diff options
| author | raysan5 <[email protected]> | 2020-05-23 18:05:41 +0200 |
|---|---|---|
| committer | raysan5 <[email protected]> | 2020-05-23 18:05:41 +0200 |
| commit | c1e09785558d7604aec9139756df79391a6c8a8c (patch) | |
| tree | c80865a76427d81508ef13e4c2fa747a6bad47f2 /src/text.c | |
| parent | 795c079c5545078c3f1a8483abbb8b207ed8e534 (diff) | |
| download | raylib-c1e09785558d7604aec9139756df79391a6c8a8c.tar.gz raylib-c1e09785558d7604aec9139756df79391a6c8a8c.zip | |
Replaced strncat() by memcpy() in some functions
Diffstat (limited to 'src/text.c')
| -rw-r--r-- | src/text.c | 35 |
1 files changed, 17 insertions, 18 deletions
@@ -55,7 +55,7 @@ #include <stdlib.h> // Required for: malloc(), free() #include <stdio.h> // Required for: vsprintf() -#include <string.h> // Required for: strcmp(), strstr(), strcpy(), strncpy(), strcat(), strncat(), sscanf() +#include <string.h> // Required for: strcmp(), strstr(), strcpy(), strncpy() [Used in TextReplace()], sscanf() [Used in LoadBMFont()] #include <stdarg.h> // Required for: va_list, va_start(), vsprintf(), va_end() [Used in TextFormat()] #include <ctype.h> // Requried for: toupper(), tolower() [Used in TextToUpper(), TextToLower()] @@ -1287,29 +1287,32 @@ char *TextInsert(const char *text, const char *insert, int position) } // Join text strings with delimiter -// REQUIRES: strcat() +// REQUIRES: memset(), memcpy() const char *TextJoin(const char **textList, int count, const char *delimiter) { static char text[MAX_TEXT_BUFFER_LENGTH] = { 0 }; memset(text, 0, MAX_TEXT_BUFFER_LENGTH); + char *textPtr = text; int totalLength = 0; int delimiterLen = TextLength(delimiter); for (int i = 0; i < count; i++) { - int textListLength = TextLength(textList[i]); + int textLength = TextLength(textList[i]); // Make sure joined text could fit inside MAX_TEXT_BUFFER_LENGTH - if ((totalLength + textListLength) < MAX_TEXT_BUFFER_LENGTH) + if ((totalLength + textLength) < MAX_TEXT_BUFFER_LENGTH) { - strcat(text, textList[i]); - totalLength += textListLength; + memcpy(textPtr, textList[i], textLength); + totalLength += textLength; + textPtr += textLength; if ((delimiterLen > 0) && (i < (count - 1))) { - strcat(text, delimiter); + memcpy(textPtr, delimiter, delimiterLen); totalLength += delimiterLen; + textPtr += textLength; } } } @@ -1453,7 +1456,7 @@ char *TextToUtf8(int *codepoints, int length) for (int i = 0, bytes = 0; i < length; i++) { utf8 = CodepointToUtf8(codepoints[i], &bytes); - strncpy(text + size, utf8, bytes); + memcpy(text + size, utf8, bytes); size += bytes; } @@ -1664,6 +1667,7 @@ int GetNextCodepoint(const char *text, int *bytesProcessed) #if defined(SUPPORT_FILEFORMAT_FNT) // Read a line from memory +// NOTE: Returns the number of bytes read static int GetLine(const char *origin, char *buffer, int maxLength) { int count = 0; @@ -1673,6 +1677,7 @@ static int GetLine(const char *origin, char *buffer, int maxLength) } // Load a BMFont file (AngelCode font file) +// REQUIRES: strstr(), sscanf(), strrchr(), memcpy() static Font LoadBMFont(const char *fileName) { #define MAX_BUFFER_SIZE 256 @@ -1727,18 +1732,12 @@ static Font LoadBMFont(const char *fileName) char *lastSlash = NULL; lastSlash = strrchr(fileName, '/'); - if (lastSlash == NULL) - { - lastSlash = strrchr(fileName, '\\'); - } + if (lastSlash == NULL) lastSlash = strrchr(fileName, '\\'); // NOTE: We need some extra space to avoid memory corruption on next allocations! - texPath = RL_MALLOC(TextLength(fileName) - TextLength(lastSlash) + TextLength(imFileName) + 4); - - // NOTE: strcat() and strncat() required a '\0' terminated string to work! - *texPath = '\0'; - strncat(texPath, fileName, TextLength(fileName) - TextLength(lastSlash) + 1); - strncat(texPath, imFileName, TextLength(imFileName)); + texPath = RL_CALLOC(TextLength(fileName) - TextLength(lastSlash) + TextLength(imFileName) + 4, 1); + memcpy(texPath, fileName, TextLength(fileName) - TextLength(lastSlash) + 1); + memcpy(texPath + TextLength(fileName) - TextLength(lastSlash) + 1, imFileName, TextLength(imFileName)); TRACELOGD(" > Texture loading path: %s", texPath); |
