LimeReport Forum

General Category | Основное => Discussion | Обсуждение => Topic started by: Subst on April 06, 2016, 05:46:59 AM

Title: CalBack и RowCount
Post by: Subst on April 06, 2016, 05:46:59 AM
Вчера собрал последние исходники. Обнаружил баг следующий:

при повторном вызове, например, previewReport происходит следующее:

getCallbackData(LimeReport::CallbackInfo info, QVariant &value) с параметром RowCount не вызывается. Что может привести как к крешу, так и не верному отображению информации в силу факта, что данные могли поменяться, а rowCount останется прежним.

Поковырял исходники. в lrdatadesignintf.cpp
в строке 615 стоит условие для обновления rowCount

if (m_rowCount == -1)

не может ли здесь собака порыться? мне кажется это условие и будет гарантировать запрос rowCount Только один раз.
Title: Re: CalBack и RowCount
Post by: Subst on April 06, 2016, 07:08:15 AM
К предыдущему посту:
чуть позже увидел обновленные исходники

lrdatadesignintf.cpp
 
615      -    if (m_rowCount == -1){
616      -        QVariant rowCount;
617      -        CallbackInfo info;
618      -        info.dataType = CallbackInfo::RowCount;
619      -        emit getCallbackData(info,rowCount);
620      -        if (rowCount.isValid()) m_rowCount = rowCount.toInt();
621      -    }
   615   +
   616   +    QVariant rowCount;
   617   +    CallbackInfo info;
   618   +    info.dataType = CallbackInfo::RowCount;
   619   +    emit getCallbackData(info,rowCount);
   620   +    if (rowCount.isValid()) m_rowCount = rowCount.toInt();
   621   +

Пересобрал, да, проблема решилась, Вы обнаружили этот баг на несколько часов раньше. Спасибо!
Title: Re: CalBack и RowCount
Post by: Arin Alex on April 06, 2016, 09:35:43 PM
А это drow первый заметил :) Постом ранее.