[PATCH stable v2] parsers.c: fix a couple of memory leaks

Kevin Bullock kbullock+mercurial at ringworld.org
Thu Jul 3 23:25:32 CDT 2014


On Jun 12, 2014, at 6:08 PM, danek.duvall at oracle.com wrote:

> # HG changeset patch
> # User Danek Duvall <danek.duvall at oracle.com>
> # Date 1402525864 25200
> #      Wed Jun 11 15:31:04 2014 -0700
> # Branch stable
> # Node ID ed93ca72e5f22b29624394a484668c153020882a
> # Parent  b35f8c487e396487e89f98e92da57ac5eb9833af
> parsers.c: fix a couple of memory leaks

Appears to have been queued without response as 8da100383dc3. (Hi patchbot!)

pacem in terris / мир / शान्ति / ‎‫سَلاَم‬ / 平和
Kevin R. Bullock

> 
> diff --git a/mercurial/parsers.c b/mercurial/parsers.c
> --- a/mercurial/parsers.c
> +++ b/mercurial/parsers.c
> @@ -1299,7 +1299,7 @@ static PyObject *find_deepest(indexObjec
>  	static const Py_ssize_t capacity = 24;
>  	int *depth, *interesting = NULL;
>  	int i, j, v, ninteresting;
> -	PyObject *dict = NULL, *keys;
> +	PyObject *dict = NULL, *keys = NULL;
>  	long *seen = NULL;
>  	int maxrev = -1;
>  	long final;
> @@ -1403,8 +1403,10 @@ static PyObject *find_deepest(indexObjec
>  		final |= i;
>  		j -= 1;
>  	}
> -	if (final == 0)
> -		return PyList_New(0);
> +	if (final == 0) {
> +		keys = PyList_New(0);
> +		goto bail;
> +	}
> 
>  	dict = PyDict_New();
>  	if (dict == NULL)
> @@ -1428,19 +1430,13 @@ static PyObject *find_deepest(indexObjec
> 
>  	keys = PyDict_Keys(dict);
> 
> -	free(depth);
> -	free(seen);
> -	free(interesting);
> -	Py_DECREF(dict);
> -
> -	return keys;
> bail:
>  	free(depth);
>  	free(seen);
>  	free(interesting);
>  	Py_XDECREF(dict);
> 
> -	return NULL;
> +	return keys;
> }
> 
> /*
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel



More information about the Mercurial-devel mailing list