@@ -5132,8 +5132,13 @@ bool MCStringSplitNative(MCStringRef self, MCStringRef p_elem_del, MCStringRef p
51325132
51335133bool 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
51585163bool 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
55795586MC_DLLEXPORT_DEF
55805587bool 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
56355642MC_DLLEXPORT_DEF
56365643bool 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