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)