SC_AngelScript icon indicating copy to clipboard operation
SC_AngelScript copied to clipboard

string::RFind does not work when using String::INVALID_INDEX as start index

Open SamVanheer opened this issue 4 years ago • 0 comments

The string::RFind method does not work properly when using String::INVALID_INDEX as the start index. This is the default value for RFind and is intended to start looking at the end of the string.

Instead it just returns String::INVALID_INDEX. This is because the method does not actually handle the String::INVALID_INDEX value correctly like std::string::rfind does: https://github.com/Solokiller/HL_Tools/blob/a028f420f535c086eb22a9c0ee5d026f57dd4b8f/src/stdlib/utility/CString.cpp#L796-L825

string::FindLastOf does work correctly, but is not a replacement for RFind.

Here's an example where it returns the wrong value:

string hostname = "Sven Co-op listen server | diff: 95%";
		
uint index = hostname.RFind("|");

index should be 25 but is actually String::INVALID_INDEX.

SamVanheer avatar Jun 16 '21 19:06 SamVanheer