Welcome, Guest. Please login or register.
Did you miss your activation email?

Author Topic: LimeReport & 64 bit  (Read 3530 times)

Subst

  • Sr. Member
  • ****
  • Posts: 450
    • View Profile
LimeReport & 64 bit
« 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. Может кому пригодится

Arin Alex

  • Developer
  • Administrator
  • Hero Member
  • *****
  • Posts: 1005
    • View Profile
Re: LimeReport & 64 bit
« Reply #1 on: March 25, 2016, 08:23:00 pm »
Спасибо ! Поправили.