summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/3rdparty/angle/src/libGLESv2/Shader.cpp9
-rw-r--r--src/angle/patches/0019-ANGLE-Fix-handling-of-shader-source-with-fixed-lengt.patch37
2 files changed, 45 insertions, 1 deletions
diff --git a/src/3rdparty/angle/src/libGLESv2/Shader.cpp b/src/3rdparty/angle/src/libGLESv2/Shader.cpp
index 1cc17a0501..5bca746094 100644
--- a/src/3rdparty/angle/src/libGLESv2/Shader.cpp
+++ b/src/3rdparty/angle/src/libGLESv2/Shader.cpp
@@ -51,7 +51,14 @@ void Shader::setSource(GLsizei count, const char *const *string, const GLint *le
for (int i = 0; i < count; i++)
{
- stream << string[i];
+ if (length == nullptr || length[i] < 0)
+ {
+ stream.write(string[i], std::strlen(string[i]));
+ }
+ else
+ {
+ stream.write(string[i], length[i]);
+ }
}
mSource = stream.str();
diff --git a/src/angle/patches/0019-ANGLE-Fix-handling-of-shader-source-with-fixed-lengt.patch b/src/angle/patches/0019-ANGLE-Fix-handling-of-shader-source-with-fixed-lengt.patch
new file mode 100644
index 0000000000..5fa244c1b5
--- /dev/null
+++ b/src/angle/patches/0019-ANGLE-Fix-handling-of-shader-source-with-fixed-lengt.patch
@@ -0,0 +1,37 @@
+From 5e277b05a16e7be24d36c600f158f8119ee583d8 Mon Sep 17 00:00:00 2001
+From: Andrew Knight <andrew.knight@theqtcompany.com>
+Date: Mon, 1 Dec 2014 11:58:08 +0200
+Subject: [PATCH] ANGLE: Fix handling of shader source with fixed length
+
+This is a cherry-pick of upstream f60fab6d154f4c9bf599e92976cd8cee7f8633e0
+(See https://chromium-review.googlesource.com/231612)
+
+Task-number: QTBUG-42882
+Change-Id: I7b4bdc4b68a1b93ff514f09ce35dbf4e9360af9b
+---
+ src/3rdparty/angle/src/libGLESv2/Shader.cpp | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/src/3rdparty/angle/src/libGLESv2/Shader.cpp b/src/3rdparty/angle/src/libGLESv2/Shader.cpp
+index 1cc17a0..5bca746 100644
+--- a/src/3rdparty/angle/src/libGLESv2/Shader.cpp
++++ b/src/3rdparty/angle/src/libGLESv2/Shader.cpp
+@@ -51,7 +51,14 @@ void Shader::setSource(GLsizei count, const char *const *string, const GLint *le
+
+ for (int i = 0; i < count; i++)
+ {
+- stream << string[i];
++ if (length == nullptr || length[i] < 0)
++ {
++ stream.write(string[i], std::strlen(string[i]));
++ }
++ else
++ {
++ stream.write(string[i], length[i]);
++ }
+ }
+
+ mSource = stream.str();
+--
+1.9.4.msysgit.1
+