Branch: Tag:

2014-12-09

2014-12-09 17:28:25 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Compiler: Fixed some NULL-dereferences.

expr4 nonterminals can be NULL for eg undeclared variables.

Thanks to Jakub Krajewski <jkrajewski@opera.com> for the report.

Fixes [Pike mailinglist 14323].

3562:    | expr4 TOK_SAFE_START_INDEX line_number_info expr0 ']'    {    /* A[?X] to ((tmp=A) && tmp[X]) */ -  if( $1->token == F_LOCAL ) +  if( $1 && ($1->token == F_LOCAL) )    {    $$=mknode(F_LAND, copy_node($1), mknode(F_INDEX, $1, $4));    }    else    {    fix_type_field( $1 ); -  if( $1->type ) +  if( $1 && $1->type )    {    int temporary;    $1->type->refs++;
3594:    {    /* A[?X..Y] to ((tmp=A) && tmp[X..Y]) */    node *range = mknode(':',$4,$6); -  if( $1->token == F_LOCAL ) +  if( $1 && ($1->token == F_LOCAL ) )    {    $$ = mknode( F_LAND, copy_node($1), mknode(F_RANGE, $1, range) );    }    else    {    fix_type_field( $1 ); -  if( $1->type ) +  if( $1 && $1->type )    {    int temporary;    $1->type->refs++;
3708:    {    /* A?->B to ((tmp=A) && tmp->B) */    int temporary; -  if( $1->token == F_LOCAL ) +  if( $1 && ($1->token == F_LOCAL) )    {    $$=mknode(F_LAND, copy_node($1), mknode(F_ARROW, $1, $4));    }