LimeReport Forum

General Category | Основное => Discussion | Обсуждение => Topic started by: DrGluck on February 15, 2016, 01:46:34 PM

Title: Bug: ReportEngine крашится, если попытаться его удалить на открытом preview
Post by: DrGluck on February 15, 2016, 01:46:34 PM
Создаём ReportEngine, передаём в него модель, вызываем previewReport. Если попытаться удалить ReportEngine, то приложение крашится. Проявляется в 1.2.1 и 1.3.9 (1.3.1 не пробовал), Qt 4.8.6.
На designReport не проявляется.

Возможно предполагается, что ReportEngine должен использоваться исключительно как синглтон. Но тогда нужен какой-либо признак, что сейчас есть открытый отчёт и функция "закрыть отчёт".
Title: Re: Bug: ReportEngine крашится, если попытаться его удалить на открытом preview
Post by: Arin Alex on February 15, 2016, 02:39:08 PM
Предполагалось, что до завершения previewReport, ReportEngine убивать не будут :) 
previewReport() должна забирать управление на себя и возвращать после закрытия диалога.
Странно если это не так.  У Вас ось какая ?
Title: Re: Bug: ReportEngine крашится, если попытаться его удалить на открытом preview
Post by: DrGluck on February 15, 2016, 03:10:56 PM
7x64, Qt 4.8.6.
Ситуация с удалением во время показа отчёта получилась случайно. Сгенерировалось событие, закрывающее приложение, и Report Engine удалился и упал в процессе удаления.
Но это, опять-таки, ненормальная ситуация для класса, падать во время delete.
Title: Re: Bug: ReportEngine крашится, если попытаться его удалить на открытом preview
Post by: Arin Alex on February 15, 2016, 03:13:35 PM
Согласен :) Посмотрим, что там за, что цепляется. 
Title: Re: Bug: ReportEngine крашится, если попытаться его удалить на открытом preview
Post by: DrGluck on February 15, 2016, 03:16:05 PM
Повторить ситуацию легко на отдельном маленьком приложении. По нажатию на кнопку создаём ReportEngine, модель и вызываем превью. По таймеру через пару секунд вызываем функцию, которая убивает ReportEngine.
Title: Re: Bug: ReportEngine крашится, если попытаться его удалить на открытом preview
Post by: Arin Alex on February 15, 2016, 03:18:51 PM
Ок :) Ломать то, мы завсегда с удовольствием :)
Title: Re: Bug: ReportEngine крашится, если попытаться его удалить на открытом preview
Post by: DrGluck on February 24, 2016, 03:21:01 PM
Я, конечно, ещё попроверяю, но похоже баг не починился.
Title: Re: Bug: ReportEngine крашится, если попытаться его удалить на открытом preview
Post by: Arin Alex on February 24, 2016, 06:07:11 PM
Странно. Я не наблюдаю падения.
Проверяю следующим образом.
Code: [Select]
void MainWindow::runPreview(){
            QTimer* timer = new QTimer(this);
            connect(timer,SIGNAL(timeout()), this, SLOT(slotOnTimer()));
            timer->start(5000);
            report()->loadFromFile(fileName);
            report()->previewReport();
}
void MainWindow::slotOnTimer()
{
    dynamic_cast<QTimer*>(sender())->stop();
    delete m_report;
    m_report = 0;

}
Окно предпросмотра закрывается, исключения не летят. 
Title: Re: Bug: ReportEngine крашится, если попытаться его удалить на открытом preview
Post by: DrGluck on February 24, 2016, 07:43:01 PM
Попробую завтра еще раз проверить, тогда отпишусь как что.
Title: Re: Bug: ReportEngine крашится, если попытаться его удалить на открытом preview
Post by: DrGluck on February 25, 2016, 12:55:51 PM
Проверил, действительно баг починился. Это я вчера из дома работал, не разобрался в чем проблема.