aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Harris <bjh21@bjh21.me.uk>2023-02-13 20:17:58 +0000
committerBen Harris <bjh21@bjh21.me.uk>2023-02-13 20:49:05 +0000
commite336513be755159158c5ba017c91b018ad4cd36c (patch)
tree3b16eb4e5626b3e524deebf7ace533eb373176d2
parent73c7bc090155ab8c4661feaeea9e6a6e74ee6f77 (diff)
downloadpuzzles-e336513be755159158c5ba017c91b018ad4cd36c.zip
puzzles-e336513be755159158c5ba017c91b018ad4cd36c.tar.gz
puzzles-e336513be755159158c5ba017c91b018ad4cd36c.tar.bz2
puzzles-e336513be755159158c5ba017c91b018ad4cd36c.tar.xz
Loopy: free the grid description string if it's invalid
-rw-r--r--loopy.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/loopy.c b/loopy.c
index 1e041f9..18da2e8 100644
--- a/loopy.c
+++ b/loopy.c
@@ -777,10 +777,13 @@ static const char *validate_desc(const game_params *params, const char *desc)
* know is the precise number of faces. */
grid_desc = extract_grid_desc(&desc);
ret = grid_validate_desc(grid_types[params->type], params->w, params->h, grid_desc);
- if (ret) return ret;
+ if (ret) {
+ sfree(grid_desc);
+ return ret;
+ }
g = loopy_generate_grid(params, grid_desc);
- if (grid_desc) sfree(grid_desc);
+ sfree(grid_desc);
for (; *desc; ++desc) {
if ((*desc >= '0' && *desc <= '9') || (*desc >= 'A' && *desc <= 'Z')) {