Скрипт x64? Потому как для x86 ограничение 2 ГБ памяти на процесс.
Не очень понятно, как эта память используется. По моим подсчётам так много не должно было бы использоваться, тем более, что скрипт, который наполнял в два раза меньшую строку, а затем удваивал данные в две переменных, отработал нормально. Но внутренняя логика использования памяти интепретатора может как-то косвенно добавлять лишние данные, а тогда результат трудно предсказуем, и такое сравнение может не работать.
Подсказка обратить внимание на разрядность помогла добиться выполнения, но только "откомпилированного" (упакованного в исполняемый файл скрипта). При простом запуске .au3-файла или прямо из SciTE-Lite ошибка не исчезает даже при добавлении в скрипт директивы
#AutoIt3Wrapper_UseX64=y
.
Разве в AutoIt строки не в юникоде?
В справке мне не попадалась информация, о том, как внутренне интерпретатор хранит данные. Мои первичные тесты считывали их из текстовых файлов в ANSI-кодировке, но очень может быть, что интепретатору удобнее хранить их в наиболее широком виде, что может засорять память. Но справка говорит об ограничении длины строк в 2 ^ 31 - 1 символа, а не байта, поэтому это должно работать в любом случае. Скорее всего, в итоге всё сводится именно к дополнительному ограничению за счёт 32-битной разрядности x86, которую следует отменить какой-то директивой, чтобы скрипт работал не только из .exe-файла (а также, предполагаю, при запуске "с параметрами", один из которых указывал бы на 64-битную разрядность), но и обычным путём, а также из SciTE-Lite.