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)