Spellchecker issue
Michael Dukelsky написал(а) к Semen Panevin в Apr 17 10:04:02 по местному времени:
Привет, Semen!
23 Apr 17 20:52, Semen Panevin послал(а) письмо к Michael Dukelsky:
SP>>> Перечитал всё что можно про delete и delete[], поставил
SP>>> несколько следственных экспериментов в рамках остаточных
SP>>> сиплюсплюсных познаний, и даже попытался осилить XlatStr(...).
SP>>> На первый взгляд косяков не обнаружено. Но падает...
SP>>> Падает точно после XlatStr. Если её закомментить - то не падает.
MD>> Копаться в этом коде лень.
SP> Т.е. всё? можно попрощаться со спелчекером?
Ну почему же? У меня даже нет права корректировать исходники голдеда на сервере. Так что на меня не надо ориентироваться. Я просто подсказал тебе возможную причину падения.
SP> Или есть шанс, что найдётся кто-то кому не лень?
Шанс есть всегда. :)
MD>> Скорее всего эта функция пишет в массив, не
MD>> проверяя нарушения границ массива, и радостно перезаписывает то
MD>> место, где хранится указатель на массив. После чего попытка
MD>> освобождения выделенной памяти приводит к краху.
SP> Под dest выделяется памяти src len + 1. Я пробовал увеличить в 2 раза,
SP> не помогло.
Не надо гадать. Надо проверить, что функция XlatStr действительно портит значение указателя на выделенную память. Если портит, то нужно разобраться из-за чего это происходит, из-за того, что она получает неверные данные, которые она не должна была получить, или из-за ошибки в самой функции. В первом случае неверные данные могут быть такими, что функция пишет по адресам, меньшим чем начало выделенного массива памяти. Поэтому сколько памяти не выделяй, это не поможет. В обоих случаях надо добавить проверку входных данных функции, чтобы она не могла писать за границы выделенного массива. Ну и в случае неверных данных надо разбираться, откуда эти неверные данные взялись.
Желаю успехов, Semen!
За сим откланиваюсь, Michael.
... node (at) f1042 (dot) ru
--- GoldED+/LNX 1.1.5-b20151128
|