pike.git / src / program.c

version» Context lines:

pike.git/src/program.c:6601:    * closest previous line number entry. The first    * stored entry is absolute.    * 2. small number Line number. Stored in the same way as the pc.    *    * Small number:    * If -127 < n < 127:    * 1. char The number.    * Else if -32768 <= n < 32768:    * 1. char -127 (marker).    * 2. short The 16-bit signed number stored in big endian order. +  * Else if n < -0x80000000 or n > 0x7fffffff in Pike 7.9 and later: +  * 1. char -127 (marker). +  * 2. short Zero (64-bit marker). +  * 3. INT_TYPE The 64-bit signed number stored in big endian order.    * Else:    * 1. char -128 (marker).    * 2. int The 32-bit signed number stored in big endian order.    *    * Whenever the filename changes, a filename entry followed by a line    * number entry is stored. If only the line number changes, a line    * number entry is stored. The first stored entry (at pc 0) is the    * file and line where the program is defined, if they are known. The    * definition line for a top level program is set to 0.    */
pike.git/src/program.c:6624:    /* This is a workaround for buggy cc & Tru64 */    unsigned char *addr = (unsigned char *)*q;    int ret = *((signed char *)addr);    ret=*(signed char *)*q;    addr++;    switch(ret)    {    case -127:    ret = (((signed char *)addr)[0]<<8) | addr[1];    addr += 2; -  break; +  if (ret) break;    -  +  /* Forward compat with Pike 7.9. */ +  addr += 4; /* Ignore the high 32-bits. */ +  +  /* FALL_THROUGH */    case -128:    ret = (((signed char *)addr)[0]<<24) | (addr[1]<<16) |    (addr[2]<<8) | addr[3];    addr += 4;    break;      #ifdef PIKE_DEBUG    case 127:    Pike_fatal("get_small_number used on filename entry\n");   #endif