diff options
Diffstat (limited to 'src/sksl/ir/SkSLBlock.h')
-rw-r--r-- | src/sksl/ir/SkSLBlock.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/sksl/ir/SkSLBlock.h b/src/sksl/ir/SkSLBlock.h index f975d160a0..17970fd561 100644 --- a/src/sksl/ir/SkSLBlock.h +++ b/src/sksl/ir/SkSLBlock.h @@ -20,8 +20,8 @@ struct Block : public Statement { Block(Position position, std::vector<std::unique_ptr<Statement>> statements, const std::shared_ptr<SymbolTable> symbols) : INHERITED(position, kBlock_Kind) - , fStatements(std::move(statements)) - , fSymbols(std::move(symbols)) {} + , fSymbols(std::move(symbols)) + , fStatements(std::move(statements)) {} SkString description() const override { SkString result("{"); @@ -33,8 +33,10 @@ struct Block : public Statement { return result; } - const std::vector<std::unique_ptr<Statement>> fStatements; + // it's important to keep fStatements defined after (and thus destroyed before) fSymbols, + // because destroying statements can modify reference counts in symbols const std::shared_ptr<SymbolTable> fSymbols; + const std::vector<std::unique_ptr<Statement>> fStatements; typedef Statement INHERITED; }; |