comparison Python/thread.c @ 84490:18bb92b0c458

Issue #18203: Replace malloc() with PyMem_RawMalloc() at Python initialization * Replace malloc() with PyMem_RawMalloc() * Replace PyMem_Malloc() with PyMem_RawMalloc() where the GIL is not held. * _Py_char2wchar() now returns a buffer allocated by PyMem_RawMalloc(), instead of PyMem_Malloc()
author Victor Stinner <victor.stinner@gmail.com>
date Sun, 07 Jul 2013 16:25:15 +0200
parents ffc6e6b00949
children fc718c177ee6
comparison
equal deleted inserted replaced
84489:213d6d7f5979 84490:18bb92b0c458
229 } 229 }
230 if (value == NULL) { 230 if (value == NULL) {
231 assert(p == NULL); 231 assert(p == NULL);
232 goto Done; 232 goto Done;
233 } 233 }
234 p = (struct key *)malloc(sizeof(struct key)); 234 p = (struct key *)PyMem_RawMalloc(sizeof(struct key));
235 if (p != NULL) { 235 if (p != NULL) {
236 p->id = id; 236 p->id = id;
237 p->key = key; 237 p->key = key;
238 p->value = value; 238 p->value = value;
239 p->next = keyhead; 239 p->next = keyhead;
268 PyThread_acquire_lock(keymutex, 1); 268 PyThread_acquire_lock(keymutex, 1);
269 q = &keyhead; 269 q = &keyhead;
270 while ((p = *q) != NULL) { 270 while ((p = *q) != NULL) {
271 if (p->key == key) { 271 if (p->key == key) {
272 *q = p->next; 272 *q = p->next;
273 free((void *)p); 273 PyMem_RawFree((void *)p);
274 /* NB This does *not* free p->value! */ 274 /* NB This does *not* free p->value! */
275 } 275 }
276 else 276 else
277 q = &p->next; 277 q = &p->next;
278 } 278 }
322 PyThread_acquire_lock(keymutex, 1); 322 PyThread_acquire_lock(keymutex, 1);
323 q = &keyhead; 323 q = &keyhead;
324 while ((p = *q) != NULL) { 324 while ((p = *q) != NULL) {
325 if (p->key == key && p->id == id) { 325 if (p->key == key && p->id == id) {
326 *q = p->next; 326 *q = p->next;
327 free((void *)p); 327 PyMem_RawFree((void *)p);
328 /* NB This does *not* free p->value! */ 328 /* NB This does *not* free p->value! */
329 break; 329 break;
330 } 330 }
331 else 331 else
332 q = &p->next; 332 q = &p->next;
355 /* Delete all keys which do not match the current thread id */ 355 /* Delete all keys which do not match the current thread id */
356 q = &keyhead; 356 q = &keyhead;
357 while ((p = *q) != NULL) { 357 while ((p = *q) != NULL) {
358 if (p->id != id) { 358 if (p->id != id) {
359 *q = p->next; 359 *q = p->next;
360 free((void *)p); 360 PyMem_RawFree((void *)p);
361 /* NB This does *not* free p->value! */ 361 /* NB This does *not* free p->value! */
362 } 362 }
363 else 363 else
364 q = &p->next; 364 q = &p->next;
365 } 365 }