]> Cypherpunks repositories - gostls13.git/commitdiff
avoid dereferencing nil type on undefined name.
authorRuss Cox <rsc@golang.org>
Fri, 19 Sep 2008 16:39:09 +0000 (09:39 -0700)
committerRuss Cox <rsc@golang.org>
Fri, 19 Sep 2008 16:39:09 +0000 (09:39 -0700)
R=ken
DELTA=12  (12 added, 0 deleted, 0 changed)
OCL=15506
CL=15528

src/cmd/gc/walk.c

index ecdb4dd7f7b0f3b962764609de7a6eff82beeb69..300b78cea86dac034078340b4e4c247d1e3bfc1e 100644 (file)
@@ -915,6 +915,8 @@ loop:
        case ONOT:
        case OANDAND:
        case OOROR:
+               if(n->left->type == T)
+                       goto ret;
                et = n->left->type->etype;
                if(et != TBOOL)
                        goto badt;
@@ -923,6 +925,8 @@ loop:
 
        case OEQ:
        case ONE:
+               if(n->left->type == T)
+                       goto ret;
                et = n->left->type->etype;
                if(!okforeq[et])
                        goto badt;
@@ -933,6 +937,8 @@ loop:
        case OLE:
        case OGE:
        case OGT:
+               if(n->left->type == T)
+                       goto ret;
                et = n->left->type->etype;
                if(!okforadd[et])
                        if(!isptrto(n->left->type, TSTRING))
@@ -945,12 +951,16 @@ loop:
        case OMUL:
        case ODIV:
        case OPLUS:
+               if(n->left->type == T)
+                       goto ret;
                et = n->left->type->etype;
                if(!okforadd[et])
                        goto badt;
                break;
 
        case OMINUS:
+               if(n->left->type == T)
+                       goto ret;
                et = n->left->type->etype;
                if(!okforadd[et])
                        goto badt;
@@ -974,6 +984,8 @@ loop:
        case OXOR:
        case OMOD:
        case OCOM:
+               if(n->left->type == T)
+                       goto ret;
                et = n->left->type->etype;
                if(!okforand[et])
                        goto badt;