Graphic refactoring broke compilation in a funny way

Bug #683082 reported by SirVer
12
This bug affects 2 people
Affects Status Importance Assigned to Milestone
widelands
Fix Released
Critical
Unassigned

Bug Description

Looks more like a bug in gcc, but we'll need to work around it as this is the default compiler on mac os x. The compiler should default to using the pass-by-reference variant of the function, but doesn't. No idea why. Maybe you, Nicolai.

$ gcc --version ~/Desktop/Programming/cpp/widelands/bzr_repo
i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5664)

--- snip ---
[ 0%] Built target BzrRevision
[ 0%] Building CXX object src/CMakeFiles/widelands_all.dir/ui_basic/button.cc.o
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/ui_basic/button.cc: In member function ‘virtual void UI::Button::draw(RenderTarget&)’:
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/ui_basic/button.cc:183: error: no matching function for call to ‘RenderTarget::RenderTarget(RenderTarget)
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/graphic/rendertarget.h:53: note: candidates are: RenderTarget::RenderTarget(RenderTarget&)
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/graphic/rendertarget.h:52: note: RenderTarget::RenderTarget(OffscreenSurfacePtr)
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/graphic/rendertarget.h:51: note: RenderTarget::RenderTarget(SurfacePtr)
make[2]: *** [src/CMakeFiles/widelands_all.dir/ui_basic/button.cc.o] Error 1
[ 0%] Building CXX object src/CMakeFiles/widelands_all.dir/ui_basic/listselect.cc.o
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/ui_basic/listselect.cc: In member function ‘virtual void UI::BaseListselect::draw(RenderTarget&)’:
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/ui_basic/listselect.cc:364: error: no matching function for call to ‘RenderTarget::RenderTarget(RenderTarget)
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/graphic/rendertarget.h:53: note: candidates are: RenderTarget::RenderTarget(RenderTarget&)
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/graphic/rendertarget.h:52: note: RenderTarget::RenderTarget(OffscreenSurfacePtr)
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/graphic/rendertarget.h:51: note: RenderTarget::RenderTarget(SurfacePtr)
make[2]: *** [src/CMakeFiles/widelands_all.dir/ui_basic/listselect.cc.o] Error 1
[ 0%] Building CXX object src/CMakeFiles/widelands_all.dir/ui_basic/slider.cc.o
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/ui_basic/slider.cc: In member function ‘virtual void UI::HorizontalSlider::draw(RenderTarget&)’:
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/ui_basic/slider.cc:372: error: no matching function for call to ‘RenderTarget::RenderTarget(RenderTarget)
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/graphic/rendertarget.h:53: note: candidates are: RenderTarget::RenderTarget(RenderTarget&)
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/graphic/rendertarget.h:52: note: RenderTarget::RenderTarget(OffscreenSurfacePtr)
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/graphic/rendertarget.h:51: note: RenderTarget::RenderTarget(SurfacePtr)
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/ui_basic/slider.cc: In member function ‘virtual void UI::VerticalSlider::draw(RenderTarget&)’:
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/ui_basic/slider.cc:470: error: no matching function for call to ‘RenderTarget::RenderTarget(RenderTarget)
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/graphic/rendertarget.h:53: note: candidates are: RenderTarget::RenderTarget(RenderTarget&)
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/graphic/rendertarget.h:52: note: RenderTarget::RenderTarget(OffscreenSurfacePtr)
/Users/sirver/Desktop/Programming/cpp/widelands/bzr_repo/src/graphic/rendertarget.h:51: note: RenderTarget::RenderTarget(SurfacePtr)
make[2]: *** [src/CMakeFiles/widelands_all.dir/ui_basic/slider.cc.o] Error 1
make[2]: Target `src/CMakeFiles/widelands_all.dir/build' not remade because of errors.
make[1]: *** [src/CMakeFiles/widelands_all.dir/all] Error 2
--- snap ---

Revision history for this message
Nicolai Hähnle (nha) wrote :

Probably fixed in r5758... at least the copy constructor obviously should take a const parameter, and it's relatively reasonable for a compiler to complain about that, I guess. Please test and mark the bug as fixed or give feedback.

Changed in widelands:
status: Confirmed → In Progress
Revision history for this message
SirVer (sirver) wrote :

I am out of town for a few days, I'll assign me so I do not forget bout this.

Changed in widelands:
assignee: Nicolai Hähnle (nha) → SirVer (sirver)
Revision history for this message
David Allwicher (aber) wrote :

I will set this to fixed, because compilation is no longer broken...

Changed in widelands:
status: In Progress → Fix Committed
SirVer (sirver)
Changed in widelands:
assignee: SirVer (sirver) → nobody
Revision history for this message
SirVer (sirver) wrote :

Released in build16-rc1

Changed in widelands:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.