Hi,

the problem here is that operator== is called on an instance of
std::map<>::iterator. The intention is probably to compare two iterators
for inequality. But calling the operator overloading function is not the
right thing, because the implementation of std::map<>::iterator might
use the default iterator, and not overload it. Probably GCC 8 used an
overloaded operator, but GCC 9 reverted to the default one. User code
should not call the function "operator==", but use the "==" operator and
let the compiler do its work.

I believe that the bug should be fixed by changing

  bool tolua_ret = (bool)  self->operator==(*value);

to

  bool tolua_ret = (bool)  ((*self)==(*value);

The problem is that that line of code is automatically generated by the
"tolua" tool. I suppose that tolua should be fixed to generate correct
code. I will look into that later, if I can.

Greetings from Curitiba!

Giovanni.
-- 
Giovanni Mascellani <g.mascell...@gmail.com>
Postdoc researcher - Université Libre de Bruxelles

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to