----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/46821/ -----------------------------------------------------------
(Updated May 11, 2016, 2:13 p.m.) Review request for mesos, Alexander Rukletsov, Joris Van Remoortere, Michael Park, and Vinod Kone. Bugs: MESOS-3335 https://issues.apache.org/jira/browse/MESOS-3335 Repository: mesos Description (updated) ------- While `FlagsBase` internally stores just maps of names and flags, the functions stored in a `Flag` rely on the original type of the `Flags` containing them (e.g., we perform dynamic casts to detect their types). Since `Option<T>` stores `T` as a value (i.e., it cannot contain reference types) any interface taking an `Option<T>` cannot rely on polymorphic behavior of `T`. To make use of polymorphism we should instead store e.g., a pointer type to avoid slicing. Here we change `Flags` arguments of `subprocess` to allow preserving the original type so `Flag` function can work reliably. We do this by passing a `Shared<Flags>` so we do not restrict copying; not that it would also be possible to use an `Owned<Flags>`, but this would require an audit of all sites where the arguments are used as `Owned<T>` should not be copied, but do not prevent that on their own. Diffs (updated) ----- 3rdparty/libprocess/include/process/subprocess.hpp 6ce1a827e36e0c65985e3928c89f51561fdd70cd 3rdparty/libprocess/src/subprocess.cpp bb0fcbcd0dfa455c8700247c5b4ca0473fd163c3 3rdparty/libprocess/src/tests/subprocess_tests.cpp 727e940f12643974de4ff2734fba431b285b5de3 Diff: https://reviews.apache.org/r/46821/diff/ Testing ------- Tested on various platforms in internal CI. Thanks, Benjamin Bannier