A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2003-March/034222.html below:

[Python-Dev] funny leak

[Python-Dev] funny leakMichael Hudson mwh@python.net
Mon, 24 Mar 2003 16:47:34 +0000
Tim Peters <tim.one@comcast.net> writes:

> OK, there's no leaking memory here, but there is a leaking refcount:  the
> refcount on the int 0 keeps going up.  The compiler has leaked references to
> little integers before, but offhand I don't recall the details.

This seems to be all it takes:

Index: compile.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/compile.c,v
retrieving revision 2.275
diff -c -C7 -r2.275 compile.c
*** compile.c	12 Feb 2003 16:56:51 -0000	2.275
--- compile.c	24 Mar 2003 16:43:28 -0000
***************
*** 4524,4537 ****
--- 4564,4578 ----
  	d = PyDict_New();
  	for (i = PyList_GET_SIZE(list); --i >= 0; ) {
  		v = PyInt_FromLong(i);
  		if (v == NULL) 
  			goto fail;
  		if (PyDict_SetItem(d, PyList_GET_ITEM(list, i), v) < 0)
  			goto fail;
+ 		Py_DECREF(v);
  		if (PyDict_DelItem(*cellvars, PyList_GET_ITEM(list, i)) < 0)
  			goto fail;
  	}
  	pos = 0;
  	i = PyList_GET_SIZE(list);
  	Py_DECREF(list);
  	while (PyDict_Next(*cellvars, &pos, &v, &w)) {

... found by the obscure strategy of searching for "PyInt_FromLong" in
Python/compile.c ...

A quick eyeballing suggests there are a bunch more of these, but only
on error returns.

Cheers,
M.

-- 
  ... when all the programmes on all the channels actually were made
  by actors with cleft pallettes speaking lines by dyslexic writers
  filmed by blind cameramen instead of merely seeming like that, it
  somehow made the whole thing more worthwhile.   -- HHGTG, Episode 11



RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4