- Joined
- Nov 7, 2014
- Messages
- 571
It seems that taking a substring of a string longer than 1020 (or 1024 in 1.26?) characters/bytes rounds to the end of the string (returns the whole string).
JASS:
function long_substring_length_bug takes nothing returns nothing
local string s = ""
set s = s + "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" // 100
set s = s + "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB" // 100
set s = s + "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" // 100
set s = s + "DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD" // 100
set s = s + "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE" // 100
set s = s + "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" // 100
set s = s + "GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG" // 100
set s = s + "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH" // 100
set s = s + "IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII" // 100
set s = s + "JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ" // 100
set s = s + "KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK" // 100
// set s = s + "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL" // 100
// set s = s + "012345678901234567890" // 21
call BJDebugMsg("StringLength(s): " + I2S(StringLength(s)))
call BJDebugMsg("StringLength(SubString(s, 0, 1019)): " + I2S(StringLength(SubString(s, 0, 1019))))
call BJDebugMsg("StringLength(SubString(s, 0, 1020)): " + I2S(StringLength(SubString(s, 0, 1020))))
call BJDebugMsg("StringLength(SubString(s, 0, 1021)): " + I2S(StringLength(SubString(s, 0, 1021))))
call BJDebugMsg("StringLength(SubString(s, 0, 1022)): " + I2S(StringLength(SubString(s, 0, 1022))))
call BJDebugMsg("StringLength(SubString(s, 0, 1023)): " + I2S(StringLength(SubString(s, 0, 1023))))
call BJDebugMsg("StringLength(SubString(s, 0, 1024)): " + I2S(StringLength(SubString(s, 0, 1024))))
call BJDebugMsg("StringLength(SubString(s, 0, 1025)): " + I2S(StringLength(SubString(s, 0, 1025))))
call BJDebugMsg("StringLength(SubString(s, 0, 1050)): " + I2S(StringLength(SubString(s, 0, 1050))))
endfunction