Merge WebView M40 build 1832189 into AOSP.
diff --git a/src/compiler/translator/ParseContext.cpp b/src/compiler/translator/ParseContext.cpp
index 37969b5..72e179f 100644
--- a/src/compiler/translator/ParseContext.cpp
+++ b/src/compiler/translator/ParseContext.cpp
@@ -1375,7 +1375,7 @@
             recover();
             return NULL;
         }
-        symbolTable.addInvariantVarying(*identifier);
+        symbolTable.addInvariantVarying(std::string(identifier->c_str()));
         const TVariable *variable = getNamedVariable(identifierLoc, identifier, symbol);
         ASSERT(variable);
         const TType &type = variable->getType();
diff --git a/src/compiler/translator/SymbolTable.h b/src/compiler/translator/SymbolTable.h
index 9cd7421..afb973a 100644
--- a/src/compiler/translator/SymbolTable.h
+++ b/src/compiler/translator/SymbolTable.h
@@ -413,7 +413,7 @@
 
     // This records invariant varyings declared through
     // "invariant varying_name;".
-    void addInvariantVarying(const TString &originalName)
+    void addInvariantVarying(const std::string &originalName)
     {
         mInvariantVaryings.insert(originalName);
     }
@@ -421,7 +421,7 @@
     // if it is set as invariant during the varying variable
     // declaration - this piece of information is stored in the
     // variable's type, not here.
-    bool isVaryingInvariant(const TString &originalName) const
+    bool isVaryingInvariant(const std::string &originalName) const
     {
       return (mGlobalInvariant ||
               mInvariantVaryings.count(originalName) > 0);
@@ -445,7 +445,7 @@
     typedef TMap<TBasicType, TPrecision> PrecisionStackLevel;
     std::vector< PrecisionStackLevel *> precisionStack;
 
-    std::set<TString> mInvariantVaryings;
+    std::set<std::string> mInvariantVaryings;
     bool mGlobalInvariant;
 
     static int uniqueIdCounter;
diff --git a/src/compiler/translator/util.cpp b/src/compiler/translator/util.cpp
index 8cc06a6..42a995e 100644
--- a/src/compiler/translator/util.cpp
+++ b/src/compiler/translator/util.cpp
@@ -307,7 +307,7 @@
         break;
       case EvqVaryingIn:
       case EvqVaryingOut:
-        if (mSymbolTable.isVaryingInvariant(name))
+        if (mSymbolTable.isVaryingInvariant(std::string(name.c_str())))
         {
             variable->isInvariant = true;
         }
diff --git a/src/libGLESv2/Framebuffer.cpp b/src/libGLESv2/Framebuffer.cpp
index 9cd9e25..74fdd68 100644
--- a/src/libGLESv2/Framebuffer.cpp
+++ b/src/libGLESv2/Framebuffer.cpp
@@ -644,12 +644,23 @@
     Renderbuffer *colorRenderbuffer = new Renderbuffer(0, colorbuffer);
     mColorbuffers[0] = new RenderbufferAttachment(GL_BACK, colorRenderbuffer);
 
-    Renderbuffer *depthStencilBuffer = new Renderbuffer(0, depthStencil);
+    GLenum depthStencilActualFormat = depthStencil->getActualFormat();
+    const gl::InternalFormat &depthStencilFormatInfo = GetInternalFormatInfo(depthStencilActualFormat);
 
-    // Make a new attachment objects to ensure we do not double-delete
-    // See angle issue 686
-    mDepthbuffer = (depthStencilBuffer->getDepthSize() != 0 ? new RenderbufferAttachment(GL_DEPTH_ATTACHMENT, depthStencilBuffer) : NULL);
-    mStencilbuffer = (depthStencilBuffer->getStencilSize() != 0 ? new RenderbufferAttachment(GL_STENCIL_ATTACHMENT, depthStencilBuffer) : NULL);
+    if (depthStencilFormatInfo.depthBits != 0 || depthStencilFormatInfo.stencilBits != 0)
+    {
+        Renderbuffer *depthStencilBuffer = new Renderbuffer(0, depthStencil);
+
+        // Make a new attachment objects to ensure we do not double-delete
+        // See angle issue 686
+        mDepthbuffer = (depthStencilFormatInfo.depthBits != 0 ? new RenderbufferAttachment(GL_DEPTH_ATTACHMENT, depthStencilBuffer) : NULL);
+        mStencilbuffer = (depthStencilFormatInfo.stencilBits != 0 ? new RenderbufferAttachment(GL_STENCIL_ATTACHMENT, depthStencilBuffer) : NULL);
+    }
+    else
+    {
+        // This method transfers ownership, so delete the unused storage if we don't keep it.
+        SafeDelete(depthStencil);
+    }
 
     mDrawBufferStates[0] = GL_BACK;
     mReadBufferState = GL_BACK;
diff --git a/src/libGLESv2/renderer/d3d/TextureD3D.cpp b/src/libGLESv2/renderer/d3d/TextureD3D.cpp
index bdea186..77e00f7 100644
--- a/src/libGLESv2/renderer/d3d/TextureD3D.cpp
+++ b/src/libGLESv2/renderer/d3d/TextureD3D.cpp
@@ -1423,7 +1423,7 @@
 
 unsigned int TextureD3D_Cube::getRenderTargetSerial(const gl::ImageIndex &index)
 {
-    return (ensureRenderTarget().isError() ? mTexStorage->getRenderTargetSerial(index) : 0);
+    return (!ensureRenderTarget().isError() ? mTexStorage->getRenderTargetSerial(index) : 0);
 }
 
 gl::Error TextureD3D_Cube::getRenderTarget(const gl::ImageIndex &index, RenderTarget **outRT)
diff --git a/src/preprocessor.target.darwin-arm.mk b/src/preprocessor.target.darwin-arm.mk
index f5256d8..efbbc78 100644
--- a/src/preprocessor.target.darwin-arm.mk
+++ b/src/preprocessor.target.darwin-arm.mk
@@ -40,7 +40,6 @@
 MY_CFLAGS_Debug := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -140,7 +139,6 @@
 MY_CFLAGS_Release := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/preprocessor.target.darwin-arm64.mk b/src/preprocessor.target.darwin-arm64.mk
index 541c8e7..b9df742 100644
--- a/src/preprocessor.target.darwin-arm64.mk
+++ b/src/preprocessor.target.darwin-arm64.mk
@@ -39,7 +39,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Debug := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -127,7 +126,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Release := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/preprocessor.target.darwin-x86.mk b/src/preprocessor.target.darwin-x86.mk
index 78496da..4be409e 100644
--- a/src/preprocessor.target.darwin-x86.mk
+++ b/src/preprocessor.target.darwin-x86.mk
@@ -39,7 +39,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Debug := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -133,7 +132,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Release := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/preprocessor.target.darwin-x86_64.mk b/src/preprocessor.target.darwin-x86_64.mk
index 64ee0ae..1fefd5d 100644
--- a/src/preprocessor.target.darwin-x86_64.mk
+++ b/src/preprocessor.target.darwin-x86_64.mk
@@ -40,7 +40,6 @@
 MY_CFLAGS_Debug := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -133,7 +132,6 @@
 MY_CFLAGS_Release := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/preprocessor.target.linux-arm.mk b/src/preprocessor.target.linux-arm.mk
index f5256d8..efbbc78 100644
--- a/src/preprocessor.target.linux-arm.mk
+++ b/src/preprocessor.target.linux-arm.mk
@@ -40,7 +40,6 @@
 MY_CFLAGS_Debug := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -140,7 +139,6 @@
 MY_CFLAGS_Release := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/preprocessor.target.linux-arm64.mk b/src/preprocessor.target.linux-arm64.mk
index 541c8e7..b9df742 100644
--- a/src/preprocessor.target.linux-arm64.mk
+++ b/src/preprocessor.target.linux-arm64.mk
@@ -39,7 +39,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Debug := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -127,7 +126,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Release := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/preprocessor.target.linux-x86.mk b/src/preprocessor.target.linux-x86.mk
index 78496da..4be409e 100644
--- a/src/preprocessor.target.linux-x86.mk
+++ b/src/preprocessor.target.linux-x86.mk
@@ -39,7 +39,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Debug := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -133,7 +132,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Release := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/preprocessor.target.linux-x86_64.mk b/src/preprocessor.target.linux-x86_64.mk
index 64ee0ae..1fefd5d 100644
--- a/src/preprocessor.target.linux-x86_64.mk
+++ b/src/preprocessor.target.linux-x86_64.mk
@@ -40,7 +40,6 @@
 MY_CFLAGS_Debug := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -133,7 +132,6 @@
 MY_CFLAGS_Release := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/translator.target.darwin-arm.mk b/src/translator.target.darwin-arm.mk
index 57eb73f..15c9640 100644
--- a/src/translator.target.darwin-arm.mk
+++ b/src/translator.target.darwin-arm.mk
@@ -31,7 +31,6 @@
 MY_CFLAGS_Debug := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -134,7 +133,6 @@
 MY_CFLAGS_Release := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/translator.target.darwin-arm64.mk b/src/translator.target.darwin-arm64.mk
index 3515ac2..89ecc72 100644
--- a/src/translator.target.darwin-arm64.mk
+++ b/src/translator.target.darwin-arm64.mk
@@ -30,7 +30,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Debug := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -121,7 +120,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Release := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/translator.target.darwin-x86.mk b/src/translator.target.darwin-x86.mk
index a085057..f09b63d 100644
--- a/src/translator.target.darwin-x86.mk
+++ b/src/translator.target.darwin-x86.mk
@@ -30,7 +30,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Debug := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -127,7 +126,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Release := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/translator.target.darwin-x86_64.mk b/src/translator.target.darwin-x86_64.mk
index b9440a6..5e200bb 100644
--- a/src/translator.target.darwin-x86_64.mk
+++ b/src/translator.target.darwin-x86_64.mk
@@ -31,7 +31,6 @@
 MY_CFLAGS_Debug := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -127,7 +126,6 @@
 MY_CFLAGS_Release := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/translator.target.linux-arm.mk b/src/translator.target.linux-arm.mk
index 57eb73f..15c9640 100644
--- a/src/translator.target.linux-arm.mk
+++ b/src/translator.target.linux-arm.mk
@@ -31,7 +31,6 @@
 MY_CFLAGS_Debug := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -134,7 +133,6 @@
 MY_CFLAGS_Release := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/translator.target.linux-arm64.mk b/src/translator.target.linux-arm64.mk
index 3515ac2..89ecc72 100644
--- a/src/translator.target.linux-arm64.mk
+++ b/src/translator.target.linux-arm64.mk
@@ -30,7 +30,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Debug := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -121,7 +120,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Release := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/translator.target.linux-x86.mk b/src/translator.target.linux-x86.mk
index a085057..f09b63d 100644
--- a/src/translator.target.linux-x86.mk
+++ b/src/translator.target.linux-x86.mk
@@ -30,7 +30,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Debug := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -127,7 +126,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Release := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/translator.target.linux-x86_64.mk b/src/translator.target.linux-x86_64.mk
index b9440a6..5e200bb 100644
--- a/src/translator.target.linux-x86_64.mk
+++ b/src/translator.target.linux-x86_64.mk
@@ -31,7 +31,6 @@
 MY_CFLAGS_Debug := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -127,7 +126,6 @@
 MY_CFLAGS_Release := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/translator_lib.target.darwin-arm.mk b/src/translator_lib.target.darwin-arm.mk
index e908b4c..5f4ea7b 100644
--- a/src/translator_lib.target.darwin-arm.mk
+++ b/src/translator_lib.target.darwin-arm.mk
@@ -95,7 +95,6 @@
 MY_CFLAGS_Debug := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -198,7 +197,6 @@
 MY_CFLAGS_Release := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/translator_lib.target.darwin-arm64.mk b/src/translator_lib.target.darwin-arm64.mk
index 4dc1a85..20ccd1e 100644
--- a/src/translator_lib.target.darwin-arm64.mk
+++ b/src/translator_lib.target.darwin-arm64.mk
@@ -94,7 +94,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Debug := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -185,7 +184,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Release := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/translator_lib.target.darwin-x86.mk b/src/translator_lib.target.darwin-x86.mk
index c04e228..d3fc8b5 100644
--- a/src/translator_lib.target.darwin-x86.mk
+++ b/src/translator_lib.target.darwin-x86.mk
@@ -94,7 +94,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Debug := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -191,7 +190,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Release := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/translator_lib.target.darwin-x86_64.mk b/src/translator_lib.target.darwin-x86_64.mk
index d6ec938..940fbd3 100644
--- a/src/translator_lib.target.darwin-x86_64.mk
+++ b/src/translator_lib.target.darwin-x86_64.mk
@@ -95,7 +95,6 @@
 MY_CFLAGS_Debug := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -191,7 +190,6 @@
 MY_CFLAGS_Release := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/translator_lib.target.linux-arm.mk b/src/translator_lib.target.linux-arm.mk
index e908b4c..5f4ea7b 100644
--- a/src/translator_lib.target.linux-arm.mk
+++ b/src/translator_lib.target.linux-arm.mk
@@ -95,7 +95,6 @@
 MY_CFLAGS_Debug := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -198,7 +197,6 @@
 MY_CFLAGS_Release := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/translator_lib.target.linux-arm64.mk b/src/translator_lib.target.linux-arm64.mk
index 4dc1a85..20ccd1e 100644
--- a/src/translator_lib.target.linux-arm64.mk
+++ b/src/translator_lib.target.linux-arm64.mk
@@ -94,7 +94,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Debug := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -185,7 +184,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Release := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/translator_lib.target.linux-x86.mk b/src/translator_lib.target.linux-x86.mk
index c04e228..d3fc8b5 100644
--- a/src/translator_lib.target.linux-x86.mk
+++ b/src/translator_lib.target.linux-x86.mk
@@ -94,7 +94,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Debug := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -191,7 +190,6 @@
 # Flags passed to both C and C++ files.
 MY_CFLAGS_Release := \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/src/translator_lib.target.linux-x86_64.mk b/src/translator_lib.target.linux-x86_64.mk
index d6ec938..940fbd3 100644
--- a/src/translator_lib.target.linux-x86_64.mk
+++ b/src/translator_lib.target.linux-x86_64.mk
@@ -95,7 +95,6 @@
 MY_CFLAGS_Debug := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
@@ -191,7 +190,6 @@
 MY_CFLAGS_Release := \
 	-fstack-protector \
 	--param=ssp-buffer-size=4 \
-	 \
 	-fno-strict-aliasing \
 	-Wno-unused-parameter \
 	-Wno-missing-field-initializers \
diff --git a/tests/compiler_tests/ShaderVariable_test.cpp b/tests/compiler_tests/ShaderVariable_test.cpp
index b642260..7fda29e 100644
--- a/tests/compiler_tests/ShaderVariable_test.cpp
+++ b/tests/compiler_tests/ShaderVariable_test.cpp
@@ -218,4 +218,29 @@
     EXPECT_TRUE(vx.isSameVaryingAtLinkTime(fx));
 }
 
+// Test that using invariant varyings doesn't trigger a double delete.
+TEST(ShaderVariableTest, InvariantDoubleDeleteBug)
+{
+    ShBuiltInResources resources;
+    ShInitBuiltInResources(&resources);
+
+    ShHandle compiler = ShConstructCompiler(GL_VERTEX_SHADER, SH_GLES2_SPEC, SH_GLSL_OUTPUT, &resources);
+    EXPECT_NE(static_cast<ShHandle>(0), compiler);
+
+    const char *program[] =
+    {
+        "attribute vec4 position;\n"
+        "varying float v;\n"
+        "invariant v;\n"
+        "void main() {\n"
+        "  v = 1.0;\n"
+        "  gl_Position = position;\n"
+        "}"
+    };
+
+    EXPECT_TRUE(ShCompile(compiler, program, 1, SH_OBJECT_CODE));
+    EXPECT_TRUE(ShCompile(compiler, program, 1, SH_OBJECT_CODE));
+    ShDestruct(compiler);
+}
+
 }  // namespace sh