Changeset 388 for python/vendor/current/Python/asdl.c
- Timestamp:
- Mar 19, 2014, 11:11:30 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
python/vendor/current/Python/asdl.c
r2 r388 5 5 asdl_seq_new(int size, PyArena *arena) 6 6 { 7 8 7 asdl_seq *seq = NULL; 8 size_t n = (size ? (sizeof(void *) * (size - 1)) : 0); 9 9 10 11 if (size < 0 || size == INT_MIN || 12 13 14 15 10 /* check size is sane */ 11 if (size < 0 || size == INT_MIN || 12 (size && ((size - 1) > (PY_SIZE_MAX / sizeof(void *))))) { 13 PyErr_NoMemory(); 14 return NULL; 15 } 16 16 17 18 19 20 21 17 /* check if size can be added safely */ 18 if (n > PY_SIZE_MAX - sizeof(asdl_seq)) { 19 PyErr_NoMemory(); 20 return NULL; 21 } 22 22 23 23 n += sizeof(asdl_seq); 24 24 25 26 27 28 29 30 31 32 25 seq = (asdl_seq *)PyArena_Malloc(arena, n); 26 if (!seq) { 27 PyErr_NoMemory(); 28 return NULL; 29 } 30 memset(seq, 0, n); 31 seq->size = size; 32 return seq; 33 33 } 34 34 … … 36 36 asdl_int_seq_new(int size, PyArena *arena) 37 37 { 38 39 38 asdl_int_seq *seq = NULL; 39 size_t n = (size ? (sizeof(void *) * (size - 1)) : 0); 40 40 41 42 if (size < 0 || size == INT_MIN || 43 44 45 46 41 /* check size is sane */ 42 if (size < 0 || size == INT_MIN || 43 (size && ((size - 1) > (PY_SIZE_MAX / sizeof(void *))))) { 44 PyErr_NoMemory(); 45 return NULL; 46 } 47 47 48 49 50 51 52 48 /* check if size can be added safely */ 49 if (n > PY_SIZE_MAX - sizeof(asdl_seq)) { 50 PyErr_NoMemory(); 51 return NULL; 52 } 53 53 54 54 n += sizeof(asdl_seq); 55 55 56 57 58 59 60 61 62 63 56 seq = (asdl_int_seq *)PyArena_Malloc(arena, n); 57 if (!seq) { 58 PyErr_NoMemory(); 59 return NULL; 60 } 61 memset(seq, 0, n); 62 seq->size = size; 63 return seq; 64 64 }
Note:
See TracChangeset
for help on using the changeset viewer.