aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Hutchings <benh@debian.org>2023-01-16 00:07:01 +0100
committerBen Harris <bjh21@bjh21.me.uk>2023-01-16 10:46:13 +0000
commit1dc1ed786fda790f60f2fe9f8e7c404c73ae64da (patch)
tree681533d497a954be9992738594c226bf889eec0d
parent4b5422181deb3b09a7926aa51a7b26d656ca15ba (diff)
downloadpuzzles-1dc1ed786fda790f60f2fe9f8e7c404c73ae64da.zip
puzzles-1dc1ed786fda790f60f2fe9f8e7c404c73ae64da.tar.gz
puzzles-1dc1ed786fda790f60f2fe9f8e7c404c73ae64da.tar.bz2
puzzles-1dc1ed786fda790f60f2fe9f8e7c404c73ae64da.tar.xz
Fix memory leak in convert_tilesize
If old_dpr == new_dpr, convert_tilesize returns early without freeing defaults. Move the initialisation of defaults after this special case.
-rw-r--r--midend.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/midend.c b/midend.c
index a14004d..1769095 100644
--- a/midend.c
+++ b/midend.c
@@ -321,10 +321,13 @@ static int convert_tilesize(midend *me, int old_tilesize,
double old_dpr, double new_dpr)
{
int x, y, rx, ry, min, max;
- game_params *defaults = me->ourgame->default_params();
+ game_params *defaults;
if (new_dpr == old_dpr)
return old_tilesize;
+
+ defaults = me->ourgame->default_params();
+
me->ourgame->compute_size(defaults, old_tilesize, &x, &y);
x *= new_dpr / old_dpr;
y *= new_dpr / old_dpr;