fixed skslc SPIR-V memory error
BUG=skia:6446
Change-Id: Ibc55124db60d6a05964ddcd02d285e313379f93e
Reviewed-on: https://skia-review.googlesource.com/10756
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Ethan Nicholas <ethannicholas@google.com>
diff --git a/src/sksl/SkSLSPIRVCodeGenerator.cpp b/src/sksl/SkSLSPIRVCodeGenerator.cpp
index 93ec4ce..2fa4e64 100644
--- a/src/sksl/SkSLSPIRVCodeGenerator.cpp
+++ b/src/sksl/SkSLSPIRVCodeGenerator.cpp
@@ -1865,7 +1865,7 @@
// need to remap to a top-left coordinate system
if (fRTHeightStructId == (SpvId) -1) {
// height variable hasn't been written yet
- std::shared_ptr<SymbolTable> st(new SymbolTable(fErrors));
+ std::shared_ptr<SymbolTable> st(new SymbolTable(&fErrors));
ASSERT(fRTHeightFieldIndex == (SpvId) -1);
std::vector<Type::Field> fields;
fields.emplace_back(Modifiers(), SkString(SKSL_RTHEIGHT_NAME),
@@ -1874,8 +1874,12 @@
Type intfStruct(Position(), name, fields);
Layout layout(-1, -1, 1, -1, -1, -1, -1, false, false, false, Layout::Format::kUnspecified,
false, Layout::kUnspecified_Primitive, -1, -1);
- Variable intfVar(Position(), Modifiers(layout, Modifiers::kUniform_Flag), name,
- intfStruct, Variable::kGlobal_Storage);
+ Variable* intfVar = new Variable(Position(),
+ Modifiers(layout, Modifiers::kUniform_Flag),
+ name,
+ intfStruct,
+ Variable::kGlobal_Storage);
+ fSynthetics.takeOwnership(intfVar);
InterfaceBlock intf(Position(), intfVar, name, SkString(""),
std::vector<std::unique_ptr<Expression>>(), st);
fRTHeightStructId = this->writeInterfaceBlock(intf);