fix memory leaks related to selection_new()

selection_new() returns an address of malloc()'ed buffer.
If ov is null, this value is discarded without freeing the buffer.
To avoid this, move null-checks before calling selection_new().

Also, remove null-check of the return value of selection_new()
because it always returns non-null.
This commit is contained in:
SHIRAKATA Kentaro
2022-06-01 21:38:51 +09:00
parent ae6a622c2b
commit 4faf79dccc

View File

@@ -4369,11 +4369,13 @@ struct selectionvar *
selection_filter_mapchar(struct selectionvar* ov, xchar typ, int lit)
{
int x, y;
struct selectionvar *ret = selection_new();
struct selectionvar *ret;
if (!ov || !ret)
if (!ov)
return NULL;
ret = selection_new();
for (x = 1; x < ret->wid; x++)
for (y = 0; y < ret->hei; y++)
if (selection_getpoint(x, y, ov)
@@ -4452,11 +4454,13 @@ void
selection_do_grow(struct selectionvar* ov, int dir)
{
int x, y;
struct selectionvar *tmp = selection_new();
struct selectionvar *tmp;
if (!ov || !tmp)
if (!ov)
return;
tmp = selection_new();
if (dir == W_RANDOM)
dir = random_wdir();