[Scummvm-git-logs] scummvm master -> 6136c20a3538e27ddadedf83a0d8ea9ec34db8f4

dreammaster noreply at scummvm.org
Thu Jun 6 04:58:17 UTC 2024


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
6136c20a35 GRAPHICS: Fix setting _disposeAfterUse in ManagedSurface constructor


Commit: 6136c20a3538e27ddadedf83a0d8ea9ec34db8f4
    https://github.com/scummvm/scummvm/commit/6136c20a3538e27ddadedf83a0d8ea9ec34db8f4
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2024-06-05T21:54:05-07:00

Commit Message:
GRAPHICS: Fix setting _disposeAfterUse in ManagedSurface constructor

The copyFrom method called in the constructor always sets
_disposeAfterUse to true, so in the case we call the constructor
with DisposeAfterUse::NO, we need to set the field value after
the call to prevent it being overwritten.

I'm also not entirely happy that the DisposeAfterUse::YES case
automatically deletes the passed surface immediately, it seems
like it'll be prone to nasty side effects. But I'm leaving as is,
because I'm not sure which code, if any, currently relies on it
to prevent a memory leak.

Changed paths:
    graphics/managed_surface.cpp


diff --git a/graphics/managed_surface.cpp b/graphics/managed_surface.cpp
index 572b8af0aeb..eef0ca3e410 100644
--- a/graphics/managed_surface.cpp
+++ b/graphics/managed_surface.cpp
@@ -73,8 +73,6 @@ ManagedSurface::ManagedSurface(Surface *surf, DisposeAfterUse::Flag disposeAfter
 		return;
 	}
 
-	_disposeAfterUse = disposeAfterUse;
-
 	if (disposeAfterUse == DisposeAfterUse::YES) {
 		_innerSurface.w = surf->w;
 		_innerSurface.h = surf->h;
@@ -86,6 +84,8 @@ ManagedSurface::ManagedSurface(Surface *surf, DisposeAfterUse::Flag disposeAfter
 	} else {
 		copyFrom(*surf);
 	}
+
+	_disposeAfterUse = disposeAfterUse;
 }
 
 ManagedSurface::ManagedSurface(const Surface *surf) :




More information about the Scummvm-git-logs mailing list