diff options
Diffstat (limited to 'src/3rdparty')
9 files changed, 42 insertions, 10 deletions
diff --git a/src/3rdparty/angle/src/libGLESv2/Context.cpp b/src/3rdparty/angle/src/libGLESv2/Context.cpp index b87689cd3f..3772da6f42 100644 --- a/src/3rdparty/angle/src/libGLESv2/Context.cpp +++ b/src/3rdparty/angle/src/libGLESv2/Context.cpp @@ -162,12 +162,6 @@ Context::~Context() deleteTransformFeedback(mTransformFeedbackMap.begin()->first); } - for (TextureMap::iterator i = mIncompleteTextures.begin(); i != mIncompleteTextures.end(); i++) - { - i->second.set(NULL); - } - mIncompleteTextures.clear(); - for (TextureMap::iterator i = mZeroTextures.begin(); i != mZeroTextures.end(); i++) { i->second.set(NULL); diff --git a/src/3rdparty/angle/src/libGLESv2/Context.h b/src/3rdparty/angle/src/libGLESv2/Context.h index 1e890de3ef..0699592d91 100644 --- a/src/3rdparty/angle/src/libGLESv2/Context.h +++ b/src/3rdparty/angle/src/libGLESv2/Context.h @@ -247,7 +247,6 @@ class Context int mClientVersion; TextureMap mZeroTextures; - TextureMap mIncompleteTextures; typedef std::unordered_map<GLuint, Framebuffer*> FramebufferMap; FramebufferMap mFramebufferMap; 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/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp index 97da6da7fd..5cddd8ab5e 100644 --- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp +++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.cpp @@ -27,6 +27,11 @@ RendererD3D::RendererD3D(egl::Display *display) RendererD3D::~RendererD3D() { + cleanup(); +} + +void RendererD3D::cleanup() +{ for (gl::TextureMap::iterator i = mIncompleteTextures.begin(); i != mIncompleteTextures.end(); ++i) { i->second.set(NULL); diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h index 9919207667..a2f778763c 100644 --- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h +++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/RendererD3D.h @@ -160,6 +160,8 @@ class RendererD3D : public Renderer const gl::Rectangle *scissor, bool blitRenderTarget, bool blitDepth, bool blitStencil, GLenum filter) = 0; + void cleanup(); + egl::Display *mDisplay; private: diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp index e6d7f3025b..777308e6cc 100644 --- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp +++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d11/Renderer11.cpp @@ -1870,6 +1870,8 @@ bool Renderer11::testDeviceResettable() void Renderer11::release() { + RendererD3D::cleanup(); + releaseShaderCompiler(); releaseDeviceResources(); diff --git a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp index 601cd24b10..18e6e2d7f0 100644 --- a/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp +++ b/src/3rdparty/angle/src/libGLESv2/renderer/d3d/d3d9/Renderer9.cpp @@ -151,6 +151,8 @@ Renderer9::~Renderer9() void Renderer9::release() { + RendererD3D::cleanup(); + releaseShaderCompiler(); releaseDeviceResources(); diff --git a/src/3rdparty/pcre/patches/pcre-r1513.patch b/src/3rdparty/pcre/patches/pcre-r1513.patch new file mode 100644 index 0000000000..d84aa0cc61 --- /dev/null +++ b/src/3rdparty/pcre/patches/pcre-r1513.patch @@ -0,0 +1,18 @@ +Index: pcre_exec.c +=================================================================== +--- pcre_exec.c (revisione 1512) ++++ pcre_exec.c (revisione 1513) +@@ -1404,8 +1404,11 @@ + condition = TRUE; + + /* Advance ecode past the assertion to the start of the first branch, +- but adjust it so that the general choosing code below works. */ +- ++ but adjust it so that the general choosing code below works. If the ++ assertion has a quantifier that allows zero repeats we must skip over ++ the BRAZERO. This is a lunatic thing to do, but somebody did! */ ++ ++ if (*ecode == OP_BRAZERO) ecode++; + ecode += GET(ecode, 1); + while (*ecode == OP_ALT) ecode += GET(ecode, 1); + ecode += 1 + LINK_SIZE - PRIV(OP_lengths)[condcode]; diff --git a/src/3rdparty/pcre/pcre_exec.c b/src/3rdparty/pcre/pcre_exec.c index b0101da351..7755aaf13a 100644 --- a/src/3rdparty/pcre/pcre_exec.c +++ b/src/3rdparty/pcre/pcre_exec.c @@ -1394,8 +1394,11 @@ for (;;) condition = TRUE; /* Advance ecode past the assertion to the start of the first branch, - but adjust it so that the general choosing code below works. */ - + but adjust it so that the general choosing code below works. If the + assertion has a quantifier that allows zero repeats we must skip over + the BRAZERO. This is a lunatic thing to do, but somebody did! */ + + if (*ecode == OP_BRAZERO) ecode++; ecode += GET(ecode, 1); while (*ecode == OP_ALT) ecode += GET(ecode, 1); ecode += 1 + LINK_SIZE - PRIV(OP_lengths)[condcode]; |