From 95f72b162b7041ad699b59b0fdaf65e6424a26a1 Mon Sep 17 00:00:00 2001 From: Ray Date: Wed, 31 Dec 2025 22:50:17 +0100 Subject: [PATCH] REVIEWED: `TextReplace()`, revert breaking change, needs to be reviewed again... -WIP- --- src/rtext.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/rtext.c b/src/rtext.c index 453ed4507..b0f77a767 100644 --- a/src/rtext.c +++ b/src/rtext.c @@ -1746,16 +1746,23 @@ char *TextReplace(const char *text, const char *search, const char *replacement) { insertPoint = (char *)strstr(text, search); lastReplacePos = (int)(insertPoint - text); - temp = strncpy(temp, text, tempLen - 1) + lastReplacePos; - tempLen -= lastReplacePos; - temp = strncpy(temp, replacement, tempLen - 1) + replaceLen; - tempLen -= replaceLen; + + // TODO: Review logic to avoid strcpy() + // OK - Those lines work + temp = strncpy(temp, text, lastReplacePos) + lastReplacePos; + temp = strcpy(temp, replacement) + replaceLen; + // WRONG - But not those ones + //temp = strncpy(temp, text, tempLen - 1) + lastReplacePos; + //tempLen -= lastReplacePos; + //temp = strncpy(temp, replacement, tempLen - 1) + replaceLen; + //tempLen -= replaceLen; text += lastReplacePos + searchLen; // Move to next "end of replace" } // Copy remaind text part after replacement to result (pointed by moving temp) - strncpy(temp, text, tempLen - 1); + strcpy(temp, text); // OK + //strncpy(temp, text, tempLen - 1); // WRONG } return result;