xintrea / mytetra_dev

MyTetra - smart crossplatform manager for information collecting / MyTetra - кроссплатформенный менеджер накопления информации / Официальная страница:
http://webhamster.ru/site/page/index/articles/projectcode/105
254 stars 55 forks source link

На второй раз копирование ветки с заметками приложение падает #125

Closed ghost closed 4 years ago

ghost commented 4 years ago

OS Xubuntu 18.04 MyTetra 1.44.77 (experimental branch)

Первый копирую вставляю ветку всё нормально, следующий раз также нажимаю копировать приложение просто вылетает

Видео https://yadi.sk/i/nXbPXdx43CUutQ

xintrea commented 4 years ago

Нужны подробности.

У вас две ветки, например Один и Два. Обе они дочерние ветки для ветки Мастер, и находятся на одном уровне. Вы копируете ветку Два и вставляете ее в Один как подчиненную. Затем вы снова копируете ветку Два и вставляете ее ветку Один как подчиненную.

Я правильно понял последовательность действий?

Лучше всего сделать скринкаст и залить на ютубчик, там все подробности будут видны. Сделать это можно через SimpleScreenRecorder или через консольную утилиту recordmydesktop.

ghost commented 4 years ago

Нужны подробности.

У вас две ветки, например Один и Два. Обе они дочерние ветки для ветки Мастер, и находятся на одном уровне. Вы копируете ветку Два и вставляете ее в Один как подчиненную. Затем вы снова копируете ветку Два и вставляете ее ветку Один как подчиненную.

Я правильно понял последовательность действий?

Лучше всего сделать скринкаст и залить на ютубчик, там все подробности будут видны. Сделать это можно через SimpleScreenRecorder или через консольную утилиту recordmydesktop.

не совсем так, выложу ссылку на видео

ghost commented 4 years ago

Видео падения приложения: https://yadi.sk/i/nXbPXdx43CUutQ

ghost commented 4 years ago

Похоже это только с зашифрованными ветками происходит

xintrea commented 4 years ago

Еще просьба включить отладочные сообщения в настройках, запустить MyTetra из консоли, добиться вылета и показать консольный выхлоп.

ghost commented 4 years ago

https://yadi.sk/i/XEJSLhCvR8tpEA https://yadi.sk/i/uiMJtIMdlyiq5g

ghost commented 4 years ago

Непонятно из-за чего падает, то ли после копирования веток друг в друга. Сейчас еще в qtcreator в дебаге соберу и запущу, может там что-нибудь покажет...

ghost commented 4 years ago

В дебагере видно где падает https://yadi.sk/i/N2L9ValJ2t3JLA

retmas commented 4 years ago

Проблема скорее всего в строчке 1015 (на видео): if(branch_clipboard_data_previos!=NULL) delete branch_clipboard_data_previos; delete здесь не нужен и даже неверен, так как за его удаление отвечает объект cbuf. И делает это он при вызове ф-й clear() или setMimeData(), что и делается ниже в коде (стр. 1031). Т.е. происходит удаление одного и того же указателя дважды. Решение: удалить эту строку (1015).

xintrea commented 4 years ago

Проблема скорее всего в строчке 1015

Да, я не понимал как Qt управляется с данным в буфере обмена, и код был некорректный. А фишка в том, что владение указателем на данные передается объекту буфера в момент вызова setMimeData().

Проблема исправлена в коммите 6465f6a2afca36dce7eac6b08a42cde7d3314597