LimeReport Forum

General Category | Основное => Discussion | Обсуждение => Topic started by: Subst on March 25, 2016, 06:56:13 AM

Title: LimeReport & 64 bit
Post by: Subst on March 25, 2016, 06:56:13 AM
При сборке на 64-х битной платформе компилятором MinGW 64 сборка вываливается. После просмотра и некоторого изучения кода баг обнаружен следующий:

Последние исходники с GIT от 24.03.2016, файл lrreportrender.cpp

строка 555
m_popupedValues.insert(QString::number((long)dataBand,16)+'|'+gf->data(), gf->values()[gf->values().count()-1]);

строка 571
gf->values().push_back(m_popupedValues.value(QString::number((long)dataBand,16)+'|'+gf->data()));

В 64-х битных системах (long)dataBand - вызовет ошибку, long - 32-х битная величина, указатель в 64-х битных системах - 64-х битная величина.

Исправляется путем преобразования не в long, а в long long, т.е.

строка 555
m_popupedValues.insert(QString::number((long long)dataBand,16)+'|'+gf->data(), gf->values()[gf->values().count()-1]);

строка 571
gf->values().push_back(m_popupedValues.value(QString::number((long long)dataBand,16)+'|'+gf->data()));

P.S. Может кому пригодится
Title: Re: LimeReport & 64 bit
Post by: Arin Alex on March 25, 2016, 08:23:00 PM
Спасибо ! Поправили.