Mercurial > cpython-lru_cache-weakref
annotate Python/dup2.c @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | cd73917f2478 |
| children |
| rev | line source |
|---|---|
| 1449 | 1 /* |
| 2 * Public domain dup2() lookalike | |
| 3 * by Curtis Jackson @ AT&T Technologies, Burlington, NC | |
| 4 * electronic address: burl!rcj | |
| 5 * | |
| 6 * dup2 performs the following functions: | |
| 7 * | |
| 8 * Check to make sure that fd1 is a valid open file descriptor. | |
| 9 * Check to see if fd2 is already open; if so, close it. | |
| 10 * Duplicate fd1 onto fd2; checking to make sure fd2 is a valid fd. | |
| 11 * Return fd2 if all went well; return BADEXIT otherwise. | |
| 12 */ | |
| 13 | |
| 14 #include <fcntl.h> | |
|
65103
cd73917f2478
Merged revisions 85236 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
13658
diff
changeset
|
15 #include <unistd.h> |
| 1449 | 16 |
| 17 #define BADEXIT -1 | |
| 18 | |
| 19 int | |
|
13658
f79434ee41fa
Mass ANSIfication of function definitions. Doesn't cover all 'extern'
Thomas Wouters <thomas@python.org>
parents:
1825
diff
changeset
|
20 dup2(int fd1, int fd2) |
| 1449 | 21 { |
| 22 if (fd1 != fd2) { | |
| 23 if (fcntl(fd1, F_GETFL) < 0) | |
| 24 return BADEXIT; | |
| 25 if (fcntl(fd2, F_GETFL) >= 0) | |
| 26 close(fd2); | |
| 27 if (fcntl(fd1, F_DUPFD, fd2) < 0) | |
| 28 return BADEXIT; | |
| 29 } | |
| 30 return fd2; | |
| 31 } |
