Mercurial > cpython-lru_cache-weakref
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 } |
