summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Thompson <ken@golang.org>2008-12-09 13:00:50 -0800
committerKen Thompson <ken@golang.org>2008-12-09 13:00:50 -0800
commit89d072f29afc9e0f6aede75c0f9906789b43d18f (patch)
tree70629f6809b7d3c45fba3a377917fa078a66b838
parent2a6a6a917ab745ffc5c916213e8339f642212b80 (diff)
downloadgolang-89d072f29afc9e0f6aede75c0f9906789b43d18f.tar.gz
robs bug converting unsafe.pointer
R=r OCL=20834 CL=20834
-rw-r--r--src/cmd/gc/go.h1
-rw-r--r--src/cmd/gc/subr.c7
2 files changed, 8 insertions, 0 deletions
diff --git a/src/cmd/gc/go.h b/src/cmd/gc/go.h
index dc6de63c6..775a4cca1 100644
--- a/src/cmd/gc/go.h
+++ b/src/cmd/gc/go.h
@@ -156,6 +156,7 @@ struct Type
uchar embedded; // TFIELD embedded type
uchar siggen;
uchar funarg;
+ uchar copyany;
// TFUNCT
uchar thistuple;
diff --git a/src/cmd/gc/subr.c b/src/cmd/gc/subr.c
index cd2fc4d2d..5638df4b7 100644
--- a/src/cmd/gc/subr.c
+++ b/src/cmd/gc/subr.c
@@ -1779,6 +1779,8 @@ loop:
goto loop;
case TANY:
+ if(!st->copyany)
+ return 0;
*stp = t;
break;
@@ -1841,6 +1843,11 @@ deep(Type *t)
nt = t; // share from here down
break;
+ case TANY:
+ nt = shallow(t);
+ nt->copyany = 1;
+ break;
+
case TPTR32:
case TPTR64:
case TCHAN: