Title: [288106] trunk/Source/ThirdParty/ANGLE
- Revision
- 288106
- Author
- [email protected]
- Date
- 2022-01-17 17:39:05 -0800 (Mon, 17 Jan 2022)
Log Message
REGRESSION (r249823): gl::Context::onProgramLink() leaks gl::Framebuffer object due early return when an error occurs in ANGLE_TRY() macro
<https://webkit.org/b/235284>
<rdar://problem/87656747>
Reviewed by Darin Adler.
* src/libANGLE/Context.cpp:
(gl::Context::setDefaultFramebuffer):
- Use std::unique_ptr<> to store gl::Framebuffer so the object
is released on early return.
* src/libANGLE/Surface.cpp:
(egl::Surface::createDefaultFramebuffer):
- Update to return std::unique_ptr<gl::Framebuffer>.
* src/libANGLE/Surface.h:
(egl::Surface::createDefaultFramebuffer):
- Update declaration to return std::unique_ptr<gl::Framebuffer>.
(egl::Surface::createDefaultFramebuffer): Delete.
- Remove the second, protected method that is currently
unimplemented.
Modified Paths
Diff
Modified: trunk/Source/ThirdParty/ANGLE/ChangeLog (288105 => 288106)
--- trunk/Source/ThirdParty/ANGLE/ChangeLog 2022-01-18 00:56:11 UTC (rev 288105)
+++ trunk/Source/ThirdParty/ANGLE/ChangeLog 2022-01-18 01:39:05 UTC (rev 288106)
@@ -1,5 +1,27 @@
2022-01-17 David Kilzer <[email protected]>
+ REGRESSION (r249823): gl::Context::onProgramLink() leaks gl::Framebuffer object due early return when an error occurs in ANGLE_TRY() macro
+ <https://webkit.org/b/235284>
+ <rdar://problem/87656747>
+
+ Reviewed by Darin Adler.
+
+ * src/libANGLE/Context.cpp:
+ (gl::Context::setDefaultFramebuffer):
+ - Use std::unique_ptr<> to store gl::Framebuffer so the object
+ is released on early return.
+ * src/libANGLE/Surface.cpp:
+ (egl::Surface::createDefaultFramebuffer):
+ - Update to return std::unique_ptr<gl::Framebuffer>.
+ * src/libANGLE/Surface.h:
+ (egl::Surface::createDefaultFramebuffer):
+ - Update declaration to return std::unique_ptr<gl::Framebuffer>.
+ (egl::Surface::createDefaultFramebuffer): Delete.
+ - Remove the second, protected method that is currently
+ unimplemented.
+
+2022-01-17 David Kilzer <[email protected]>
+
REGRESSION (r286603): rx::ProgramMtl::getSpecializedShader() leaks MTLFunctionConstantValues object due early return when an error occurs in ANGLE_TRY() macro
<https://webkit.org/b/235281>
<rdar://problem/87656387>
Modified: trunk/Source/ThirdParty/ANGLE/src/libANGLE/Context.cpp (288105 => 288106)
--- trunk/Source/ThirdParty/ANGLE/src/libANGLE/Context.cpp 2022-01-18 00:56:11 UTC (rev 288105)
+++ trunk/Source/ThirdParty/ANGLE/src/libANGLE/Context.cpp 2022-01-18 01:39:05 UTC (rev 288106)
@@ -9099,7 +9099,7 @@
ASSERT(mCurrentDrawSurface == nullptr);
ASSERT(mCurrentReadSurface == nullptr);
- Framebuffer *newDefaultFramebuffer = nullptr;
+ std::unique_ptr<gl::Framebuffer> newDefaultFramebuffer;
mCurrentDrawSurface = drawSurface;
mCurrentReadSurface = readSurface;
@@ -9111,7 +9111,7 @@
}
else
{
- newDefaultFramebuffer = new Framebuffer(this, mImplementation.get(), readSurface);
+ newDefaultFramebuffer = std::make_unique<gl::Framebuffer>(this, mImplementation.get(), readSurface);
}
ASSERT(newDefaultFramebuffer);
@@ -9122,14 +9122,14 @@
// Update default framebuffer, the binding of the previous default
// framebuffer (or lack of) will have a nullptr.
- mState.mFramebufferManager->setDefaultFramebuffer(newDefaultFramebuffer);
+ mState.mFramebufferManager->setDefaultFramebuffer(newDefaultFramebuffer.release());
if (mState.getDrawFramebuffer() == nullptr)
{
- bindDrawFramebuffer(newDefaultFramebuffer->id());
+ bindDrawFramebuffer(mState.mFramebufferManager->getDefaultFramebuffer()->id());
}
if (mState.getReadFramebuffer() == nullptr)
{
- bindReadFramebuffer(newDefaultFramebuffer->id());
+ bindReadFramebuffer(mState.mFramebufferManager->getDefaultFramebuffer()->id());
}
return egl::NoError();
Modified: trunk/Source/ThirdParty/ANGLE/src/libANGLE/Surface.cpp (288105 => 288106)
--- trunk/Source/ThirdParty/ANGLE/src/libANGLE/Surface.cpp 2022-01-18 00:56:11 UTC (rev 288105)
+++ trunk/Source/ThirdParty/ANGLE/src/libANGLE/Surface.cpp 2022-01-18 01:39:05 UTC (rev 288106)
@@ -618,10 +618,10 @@
return mImplementation->getBufferAge(context, age);
}
-gl::Framebuffer *Surface::createDefaultFramebuffer(const gl::Context *context,
- egl::Surface *readSurface)
+std::unique_ptr<gl::Framebuffer> Surface::createDefaultFramebuffer(const gl::Context *context,
+ egl::Surface *readSurface)
{
- return new gl::Framebuffer(context, this, readSurface);
+ return std::make_unique<gl::Framebuffer>(context, this, readSurface);
}
gl::InitState Surface::initState(const gl::ImageIndex & /*imageIndex*/) const
Modified: trunk/Source/ThirdParty/ANGLE/src/libANGLE/Surface.h (288105 => 288106)
--- trunk/Source/ThirdParty/ANGLE/src/libANGLE/Surface.h 2022-01-18 00:56:11 UTC (rev 288105)
+++ trunk/Source/ThirdParty/ANGLE/src/libANGLE/Surface.h 2022-01-18 01:39:05 UTC (rev 288106)
@@ -104,8 +104,8 @@
void setFixedWidth(EGLint width);
void setFixedHeight(EGLint height);
- gl::Framebuffer *createDefaultFramebuffer(const gl::Context *context,
- egl::Surface *readSurface);
+ std::unique_ptr<gl::Framebuffer> createDefaultFramebuffer(const gl::Context *context,
+ egl::Surface *readSurface);
const Config *getConfig() const;
@@ -215,8 +215,6 @@
~Surface() override;
rx::FramebufferAttachmentObjectImpl *getAttachmentImpl() const override;
- gl::Framebuffer *createDefaultFramebuffer(const Display *display);
-
// ANGLE-only method, used internally
friend class gl::Texture;
Error releaseTexImageFromTexture(const gl::Context *context);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes