Fix crash when editing particle scripts
If the scripts fail to produce valid bytecode, don't overwrite the
interpreter.
Change-Id: Icd008a5188166ce086ff4df87dcb2b43d7f80820
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/269487
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/modules/particles/src/SkParticleEffect.cpp b/modules/particles/src/SkParticleEffect.cpp
index 02e2e15..133222d 100644
--- a/modules/particles/src/SkParticleEffect.cpp
+++ b/modules/particles/src/SkParticleEffect.cpp
@@ -161,14 +161,18 @@
particleCode.append(fParticleCode.c_str());
auto effectProgram = buildProgram(effectCode);
- fEffectProgram.fInterpreter.reset(new SkSL::Interpreter<INTERPRETER_WIDTH>(
- std::move(effectProgram.first)));
- fEffectProgram.fExternalValues.swap(effectProgram.second);
+ if (effectProgram.first) {
+ fEffectProgram.fInterpreter.reset(
+ new SkSL::Interpreter<INTERPRETER_WIDTH>(std::move(effectProgram.first)));
+ fEffectProgram.fExternalValues.swap(effectProgram.second);
+ }
auto particleProgram = buildProgram(particleCode);
- fParticleProgram.fInterpreter.reset(new SkSL::Interpreter<INTERPRETER_WIDTH>(
- std::move(particleProgram.first)));
- fParticleProgram.fExternalValues.swap(particleProgram.second);
+ if (particleProgram.first) {
+ fParticleProgram.fInterpreter.reset(
+ new SkSL::Interpreter<INTERPRETER_WIDTH>(std::move(particleProgram.first)));
+ fParticleProgram.fExternalValues.swap(particleProgram.second);
+ }
}
SkParticleEffect::SkParticleEffect(sk_sp<SkParticleEffectParams> params, const SkRandom& random)