| Index: sandbox/linux/bpf_dsl/bpf_dsl.cc
|
| diff --git a/sandbox/linux/bpf_dsl/bpf_dsl.cc b/sandbox/linux/bpf_dsl/bpf_dsl.cc
|
| index 0363be068e72532092e437f1562f61e239890ad5..3772efb2c703d4756746ff3cdf137a8d7d943177 100644
|
| --- a/sandbox/linux/bpf_dsl/bpf_dsl.cc
|
| +++ b/sandbox/linux/bpf_dsl/bpf_dsl.cc
|
| @@ -118,8 +118,11 @@ class IfThenResultExprImpl : public internal::ResultExprImpl {
|
| : cond_(cond), then_result_(then_result), else_result_(else_result) {}
|
|
|
| CodeGen::Node Compile(PolicyCompiler* pc) const override {
|
| - return cond_->Compile(
|
| - pc, then_result_->Compile(pc), else_result_->Compile(pc));
|
| + // We compile the "then" and "else" expressions in separate statements so
|
| + // they have a defined sequencing. See https://crbug.com/529480.
|
| + CodeGen::Node then_node = then_result_->Compile(pc);
|
| + CodeGen::Node else_node = else_result_->Compile(pc);
|
| + return cond_->Compile(pc, then_node, else_node);
|
| }
|
|
|
| bool HasUnsafeTraps() const override {
|
|
|