Skip to content

Commit 813957a

Browse files
committed
[[ Bug 18349 ]] Add assertions to MCStringFindAndReplace* functions to ensure target string is mutable
[[ Bug 18349 ]] Ensure target string is not indirect in MCStringFindAndReplace* functions
1 parent 726b67f commit 813957a

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

libfoundation/src/foundation-string.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5132,8 +5132,13 @@ bool MCStringSplitNative(MCStringRef self, MCStringRef p_elem_del, MCStringRef p
51325132

51335133
bool MCStringFindAndReplaceChar(MCStringRef self, char_t p_pattern, char_t p_replacement, MCStringOptions p_options)
51345134
{
5135-
__MCAssertIsString(self);
5135+
__MCAssertIsMutableString(self);
51365136

5137+
// Ensure the string is not indirect
5138+
if (__MCStringIsIndirect(self))
5139+
if (!__MCStringResolveIndirect(self))
5140+
return false;
5141+
51375142
if (p_options == kMCStringOptionCompareExact || p_options == kMCStringOptionCompareNonliteral)
51385143
{
51395144
// Simplest case, just substitute pattern for replacement.
@@ -5157,6 +5162,8 @@ bool MCStringFindAndReplaceChar(MCStringRef self, char_t p_pattern, char_t p_rep
51575162

51585163
bool MCStringFindAndReplaceNative(MCStringRef self, MCStringRef p_pattern, MCStringRef p_replacement, MCStringOptions p_options)
51595164
{
5165+
__MCAssertIsMutableString(self);
5166+
51605167
// Ensure the string is not indirect.
51615168
if (__MCStringIsIndirect(self))
51625169
if (!__MCStringResolveIndirect(self))
@@ -5579,7 +5586,7 @@ MCStringSplitByDelimiterNative(MCStringRef self, MCStringRef p_elem_del, MCStrin
55795586
MC_DLLEXPORT_DEF
55805587
bool MCStringFindAndReplaceChar(MCStringRef self, codepoint_t p_pattern, codepoint_t p_replacement, MCStringOptions p_options)
55815588
{
5582-
__MCAssertIsString(self);
5589+
__MCAssertIsMutableString(self);
55835590

55845591
// Ensure the string is not indirect.
55855592
if (__MCStringIsIndirect(self))
@@ -5635,7 +5642,7 @@ bool MCStringFindAndReplaceChar(MCStringRef self, codepoint_t p_pattern, codepoi
56355642
MC_DLLEXPORT_DEF
56365643
bool MCStringFindAndReplace(MCStringRef self, MCStringRef p_pattern, MCStringRef p_replacement, MCStringOptions p_options)
56375644
{
5638-
__MCAssertIsString(self);
5645+
__MCAssertIsMutableString(self);
56395646
__MCAssertIsString(p_pattern);
56405647
__MCAssertIsString(p_replacement);
56415648

0 commit comments

Comments
 (0)