LCOV - code coverage report
Current view: top level - Python - asdl.c (source / functions) Hit Total Coverage
Test: CPython lcov report Lines: 24 36 66.7 %
Date: 2017-04-19 Functions: 2 2 100.0 %

          Line data    Source code
       1             : #include "Python.h"
       2             : #include "asdl.h"
       3             : 
       4             : asdl_seq *
       5       14767 : asdl_seq_new(int size, PyArena *arena)
       6             : {
       7       14767 :     asdl_seq *seq = NULL;
       8       14767 :     size_t n = (size ? (sizeof(void *) * (size - 1)) : 0);
       9             : 
      10             :     /* check size is sane */
      11       14767 :     if (size < 0 || size == INT_MIN ||
      12       11934 :         (size && ((size - 1) > (PY_SIZE_MAX / sizeof(void *))))) {
      13           0 :         PyErr_NoMemory();
      14           0 :         return NULL;
      15             :     }
      16             : 
      17             :     /* check if size can be added safely */
      18       14767 :     if (n > PY_SIZE_MAX - sizeof(asdl_seq)) {
      19           0 :         PyErr_NoMemory();
      20           0 :         return NULL;
      21             :     }
      22             : 
      23       14767 :     n += sizeof(asdl_seq);
      24             : 
      25       14767 :     seq = (asdl_seq *)PyArena_Malloc(arena, n);
      26       14767 :     if (!seq) {
      27           0 :         PyErr_NoMemory();
      28           0 :         return NULL;
      29             :     }
      30       14767 :     memset(seq, 0, n);
      31       14767 :     seq->size = size;
      32       14767 :     return seq;
      33             : }
      34             : 
      35             : asdl_int_seq *
      36         911 : asdl_int_seq_new(int size, PyArena *arena)
      37             : {
      38         911 :     asdl_int_seq *seq = NULL;
      39         911 :     size_t n = (size ? (sizeof(void *) * (size - 1)) : 0);
      40             : 
      41             :     /* check size is sane */
      42         911 :     if (size < 0 || size == INT_MIN ||
      43         911 :         (size && ((size - 1) > (PY_SIZE_MAX / sizeof(void *))))) {
      44           0 :             PyErr_NoMemory();
      45           0 :             return NULL;
      46             :     }
      47             : 
      48             :     /* check if size can be added safely */
      49         911 :     if (n > PY_SIZE_MAX - sizeof(asdl_seq)) {
      50           0 :         PyErr_NoMemory();
      51           0 :         return NULL;
      52             :     }
      53             : 
      54         911 :     n += sizeof(asdl_seq);
      55             : 
      56         911 :     seq = (asdl_int_seq *)PyArena_Malloc(arena, n);
      57         911 :     if (!seq) {
      58           0 :         PyErr_NoMemory();
      59           0 :         return NULL;
      60             :     }
      61         911 :     memset(seq, 0, n);
      62         911 :     seq->size = size;
      63         911 :     return seq;
      64             : }

Generated by: LCOV version 1.10