New issue
Advanced search Search tips

Issue 682965 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner: ----
Closed: Mar 2017
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux
Pri: 3
Type: Bug



Sign in to add a comment

Build failure with GCC 4.9.4

Reported by floppyma...@gmail.com, Jan 20 2017

Issue description

Chrome Version       : 56.0.2922.1
OS Version: Gentoo

../../third_party/webrtc/modules/desktop_capture/screen_capturer_x11.cc:415:10: error: cannot bind ‘std::unique_ptr<webrtc::{anonymous}::ScreenCapturerLinux>’ lvalue to ‘std::unique_ptr<webrtc::{anonymous}::ScreenCapturerLinux>&&’
   return capturer;
          ^
 
Project Member

Comment 1 by bugdroid1@chromium.org, Jan 20 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/external/webrtc.git/+/888874f761fdd69bb9448b3905627289b5fd66dd

commit 888874f761fdd69bb9448b3905627289b5fd66dd
Author: floppymaster <floppymaster@gmail.com>
Date: Fri Jan 20 04:20:45 2017

Allow GCC 4.9 to compile Chromium

In order to implicit cast an lvalue to an rvalue when returning
from a function, the return type and type of variable in the return
statement previously had to be exactly the same. When this was not
the case, std::move was required. For instance, when returning a
std::unique_ptr<Derived> variable in a function with a
std::unique_ptr<Base> return type, std::move is required.

DR 1579 changed this, and allows for implicitly converting
to the return type, if the return type has a constructor(T&&), where
T is the type of the local variable being returned. DR 1579 was
implemented in GCC 5, but not in GCC 4.9 and below. By explicitly
qualifying the local variable with std::move, we allow for compiling
with GCC 4.9 and incur no performance penalty. The code is still
absolutely correct to the word of C++11.

BUG= chromium:682965 

See also:
* https://bugs.gentoo.org/show_bug.cgi?id=600288
* https://stackoverflow.com/questions/22018115/converting-stdunique-ptrderived-to-stdunique-ptrbase#comment33375875_22018521
* http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3833.html#1579

Review-Url: https://codereview.webrtc.org/2642053003
Cr-Commit-Position: refs/heads/master@{#16175}

[modify] https://crrev.com/888874f761fdd69bb9448b3905627289b5fd66dd/AUTHORS
[modify] https://crrev.com/888874f761fdd69bb9448b3905627289b5fd66dd/webrtc/modules/desktop_capture/screen_capturer_x11.cc

Comment 2 by ajha@chromium.org, Jan 23 2017

Components: Build
Labels: M-58
Status: Untriaged (was: Unconfirmed)
Changing the status to Untriaged as Fix has landed. Please let us know if this can be closed or if still further work needs to be done here?
Status: Fixed (was: Untriaged)

Sign in to add a comment