diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp
index 7525396b3814eb61a456398408fd958b9d6bc91a..446075230c33806fb1ca19a51ab6ada1fa3559bf 100644
--- a/glslang/MachineIndependent/ShaderLang.cpp
+++ b/glslang/MachineIndependent/ShaderLang.cpp
@@ -840,8 +840,13 @@ bool ProcessDeferred(
     // Add built-in symbols that are potentially context dependent;
     // they get popped again further down.
     if (! AddContextSpecificSymbols(resources, compiler->infoSink, symbolTable, version, profile, spvVersion,
-                                    stage, source))
+                                    stage, source)) {
+        delete symbolTableMemory;
+        delete [] lengths;
+        delete [] strings;
+        delete [] names;
         return false;
+    }
 
     //
     // Now we can process the full shader under proper symbols and rules.