Интернет говорит что это ошибка когда выходишь за границы массива, но в этой функции вообще перечисления массива не какого нет. Она подсчитывает строки в richedit документе, начиная с конца ориентируясь на знак перехода на новую строку. И такая ошибка в моей программе возникает регулярно в разных функциях, и всё бы ничего, её можно убрав галочку проскочить(хоть и задалбывает) но в одной из функции началась вообще вакханалия, переданная в неё строка через пару инструкций сама по себе изменяется, может причина в этих ошибках. Код (Text): int CalculateLine() { //struct GETTEXTLENGTHEX gettextlength = { 0 }; FINDTEXTW ft= { 0 }; gettextlength.codepage = 1200; gettextlength.flags = GTL_DEFAULT; DWORD PosEnd = SendMessageW(hRicheEdit, EM_GETTEXTLENGTHEX, (WPARAM)&gettextlength, 0); int CountString = 0; ft.chrg.cpMax = 0; ft.lpstrText = L"\r"; while (PosEnd != -1) { ft.chrg.cpMin = PosEnd; PosEnd = SendMessageW(hRicheEdit, EM_FINDTEXTEXW, 0, (LPARAM)&ft); CountString++; } return CountString; } ошибка возникает на выходе из функции, когда происходит проверка call @_RTC_CheckStackVars@8
Из документации: EM_FINDTEXTEXW uses the FINDTEXTEXW structure, while EM_FINDTEXTW uses the FINDTEXTW structure. The difference is that EM_FINDTEXTEXW reports the range of text that was found. Windows думает, что работает со структурой большего размера, и меняет в ней последний элемент. Но по факту это изменение будет уже не внутри структуры, а за её пределами.