mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 21:51:50 +00:00 
			
		
		
		
	rollback the merge of r74524 because it causes failures in test_multiprocessing
This commit is contained in:
		
							parent
							
								
									c70614fdce
								
							
						
					
					
						commit
						fe51a1f204
					
				
					 2 changed files with 2 additions and 10 deletions
				
			
		|  | @ -61,9 +61,6 @@ instances, functions written in Python (but not in C), instance methods, sets, | ||||||
| frozensets, file objects, :term:`generator`\s, type objects, sockets, arrays, | frozensets, file objects, :term:`generator`\s, type objects, sockets, arrays, | ||||||
| deques, and regular expression pattern objects. | deques, and regular expression pattern objects. | ||||||
| 
 | 
 | ||||||
| .. versionchanged:: 2.7 |  | ||||||
|    Added support for thread.lock and threading.Lock. |  | ||||||
| 
 |  | ||||||
| Several built-in types such as :class:`list` and :class:`dict` do not directly | Several built-in types such as :class:`list` and :class:`dict` do not directly | ||||||
| support weak references but can add support through subclassing:: | support weak references but can add support through subclassing:: | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,7 +3,6 @@ | ||||||
| /* Interface to Sjoerd's portable C thread library */ | /* Interface to Sjoerd's portable C thread library */ | ||||||
| 
 | 
 | ||||||
| #include "Python.h" | #include "Python.h" | ||||||
| #include "structmember.h" /* offsetof */ |  | ||||||
| 
 | 
 | ||||||
| #ifndef WITH_THREAD | #ifndef WITH_THREAD | ||||||
| #error "Error!  The rest of Python is not compiled with thread support." | #error "Error!  The rest of Python is not compiled with thread support." | ||||||
|  | @ -21,15 +20,12 @@ static PyObject *ThreadError; | ||||||
| typedef struct { | typedef struct { | ||||||
| 	PyObject_HEAD | 	PyObject_HEAD | ||||||
| 	PyThread_type_lock lock_lock; | 	PyThread_type_lock lock_lock; | ||||||
| 	PyObject *in_weakreflist; |  | ||||||
| } lockobject; | } lockobject; | ||||||
| 
 | 
 | ||||||
| static void | static void | ||||||
| lock_dealloc(lockobject *self) | lock_dealloc(lockobject *self) | ||||||
| { | { | ||||||
| 	assert(self->lock_lock); | 	assert(self->lock_lock); | ||||||
| 	if (self->in_weakreflist != NULL) |  | ||||||
| 		PyObject_ClearWeakRefs((PyObject *) self); |  | ||||||
| 	/* Unlock the lock so it's safe to free it */ | 	/* Unlock the lock so it's safe to free it */ | ||||||
| 	PyThread_acquire_lock(self->lock_lock, 0); | 	PyThread_acquire_lock(self->lock_lock, 0); | ||||||
| 	PyThread_release_lock(self->lock_lock); | 	PyThread_release_lock(self->lock_lock); | ||||||
|  | @ -149,7 +145,7 @@ static PyTypeObject Locktype = { | ||||||
| 	0,				/*tp_traverse*/ | 	0,				/*tp_traverse*/ | ||||||
| 	0,				/*tp_clear*/ | 	0,				/*tp_clear*/ | ||||||
| 	0,				/*tp_richcompare*/ | 	0,				/*tp_richcompare*/ | ||||||
| 	offsetof(lockobject, in_weakreflist),	/*tp_weaklistoffset*/ | 	0,				/*tp_weaklistoffset*/ | ||||||
| 	0,				/*tp_iter*/ | 	0,				/*tp_iter*/ | ||||||
| 	0,				/*tp_iternext*/ | 	0,				/*tp_iternext*/ | ||||||
| 	lock_methods,			/*tp_methods*/ | 	lock_methods,			/*tp_methods*/ | ||||||
|  | @ -163,7 +159,6 @@ newlockobject(void) | ||||||
| 	if (self == NULL) | 	if (self == NULL) | ||||||
| 		return NULL; | 		return NULL; | ||||||
| 	self->lock_lock = PyThread_allocate_lock(); | 	self->lock_lock = PyThread_allocate_lock(); | ||||||
| 	self->in_weakreflist = NULL; |  | ||||||
| 	if (self->lock_lock == NULL) { | 	if (self->lock_lock == NULL) { | ||||||
| 		PyObject_Del(self); | 		PyObject_Del(self); | ||||||
| 		self = NULL; | 		self = NULL; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Benjamin Peterson
						Benjamin Peterson