This bug has been fixed in the upstream's CVS altho it still required
a modification to get it to compile on my machine.

The affected files are src/DBuffer.{cpp,h}.

By compiling the CVS code with gcc 4.1.2, i was getting:
[...]
       then mv -f ".deps/DBuffer.Tpo" ".deps/DBuffer.Po"; else rm -f
".deps/DBuffer.Tpo"; exit 1; fi
DBuffer.cpp: In member function 'void vapp::DBuffer::operator<<(std::string)':
DBuffer.cpp:211: erreur: ambiguous overload for 'operator<<' in
'*(vapp::DBuffer*)this << s. std::basic_string<_CharT, _Traits,
_Alloc>::length [with _CharT = char, _Traits = std::char_traits<char>,
_Alloc = std::allocator<char>]()'
DBuffer.cpp:169: note: candidats sont: void vapp::DBuffer::operator<<(bool)
DBuffer.cpp:181: note:                 void vapp::DBuffer::operator<<(int)
DBuffer.cpp:189: note:                 void
vapp::DBuffer::operator<<(unsigned int)
DBuffer.cpp:202: note:                 void vapp::DBuffer::operator<<(float)
DBuffer.cpp:210: note:                 void
vapp::DBuffer::operator<<(std::string) <near match>
make[1]: *** [DBuffer.o] Erreur 1
make[1]: quittant le répertoire « /tmp/xmoto/src »
make: *** [all-recursive] Erreur 1

That should be fixed soon, but in the meantime i simply modified the
method starting at line 211 of DBuffer.cpp to:

 void DBuffer::operator <<(std::string s) {
   *this << static_cast<unsigned int>(s.length());
   this->writeBuf(s.c_str(), s.length());
 }

Once recompiled, the problem is fixed! My replays [in which i grab at
least one apple] are now valid and play fine.

Greetings go to Nicolas for the fix!

-Pascal
--
Homepage (http://organact.mine.nu)
Debian GNU/Linux (http://www.debian.org)
École de technologie supérieure (http://www.etsmtl.ca)

Reply via email to