SASGIS - SAS.Планета
View Issue Details
0002717SAS.Планета[All Projects] Багpublic08-05-2015 12:2129-07-2015 12:26
zed 
zed 
normalminorhave not tried
resolvedfixed 
.Nightly 
150915150915 
0002717: AV при сохранении нового полигона
Словил несколько раз разрушительную авешку при попытке сохранить новый полигон в БД. Полигон создавался в гуе и нажималась кнопочка "Сохранить", после чего вываливалась AV в функции TMarkDbSml.UpdateMark (один раз получилось словить ошибку под отладчиком), программа закрывалась и файл меток становился равен нулю. Очень плохая ошибка.
Сохранялся простой полигон из трёх точек, но в базе было много сложных полигонов, общим числом от 500 и более.
Может и ошибаюсь, но кажется нашёл, в чём могла быть ошибка: при сохранении нового полигона вызывался метод TfrmMain.TBEditPathSaveClick а оттуда метод FMarkDBGUI.SaveMarkModal и указывалось, что это существующий полигон (AIsNewMark = False). Возможно это и приводило иногда к косякам.
No tags attached.
Issue History
08-05-2015 12:21zedNew Issue
08-05-2015 12:22zedNote Added: 0015870
09-05-2015 07:50vdemidovNote Added: 0015873
09-05-2015 07:55zedNote Added: 0015874
09-05-2015 08:08zedNote Edited: 0015874bug_revision_view_page.php?bugnote_id=15874#r6585
09-05-2015 08:12vdemidovNote Added: 0015875
09-05-2015 08:18zedNote Added: 0015876
09-05-2015 08:27vdemidovNote Added: 0015877
09-05-2015 08:31zedNote Added: 0015878
09-05-2015 08:43vdemidovNote Added: 0015879
29-07-2015 12:25vdemidovNote Added: 0016237
29-07-2015 12:25vdemidovStatusnew => resolved
29-07-2015 12:25vdemidovFixed in Version => 150915
29-07-2015 12:25vdemidovResolutionopen => fixed
29-07-2015 12:25vdemidovAssigned To => zed
29-07-2015 12:26vdemidovTarget Version => 150915

Notes
(0015870)
zed   
08-05-2015 12:22   
Собственно, поведение в TfrmMain.TBEditPathSaveClick изменил, теперь этот метод должен вызываться только для обновления существующих полигонов.

Посмотрим, будет ли падать теперь.
(0015873)
vdemidov   
09-05-2015 07:50   
Не изменил поведение при нажатии на Enter.
Но оно и так не должно было влиять. AIsNewMark влияет только, если исходная метка передающаяся в тот метод пустая. А для нового полигона она должна быть пустой.
(0015874)
zed   
09-05-2015 07:55   
(edited on: 09-05-2015 08:08)
О, оно ещё и по Enter что-то делало? Не знал.

P.S. Пофиксил.

(0015875)
vdemidov   
09-05-2015 08:12   
> после чего вываливалась AV в функции TMarkDbSml.UpdateMark
В каком месте?
(0015876)
zed   
09-05-2015 08:18   
Точно не скажу. Где-то в конце. Может и на Save, потому как файл меток обнулялся.

AV было про write adress и адрес какой-то странный типа 80500000 (в начале пара цифр, а в конце много нулей).
(0015877)
vdemidov   
09-05-2015 08:27   
Просто то что ты исправил никак не должно было повлиять. Разве что в поле FEditMarkPoly попал мусор уже после смены режима, то есть tbitmSaveMark.DropdownCombo установилась правильно, а потом значение FEditMarkPoly испортилось. А ты получается не убрал это повреждение, а просто замаскировал.
(0015878)
zed   
09-05-2015 08:31   
Да, тоже была мысль про мусор.

Но я вообще исправлял не ради багофикса, а чтобы сделать быстрый Save без вызова диалога. Переделывал я это уже напоровшись пару раз на AV и чисто случайно увидел что в этом месте как-то неправильно вызываются методы - сохранение нового полигона под видом существующего. Отсюда и предположение.
(0015879)
vdemidov   
09-05-2015 08:43   
Плохо.
(0016237)
vdemidov   
29-07-2015 12:25   
Будем считать исправленным.