mirror of
https://github.com/golang/go
synced 2024-11-25 05:47:57 -07:00
gc: make sure path names are canonical
R=ken2 CC=golang-dev https://golang.org/cl/2209042
This commit is contained in:
parent
fcb24e8c62
commit
555f5b6b24
@ -353,8 +353,11 @@ static int
|
|||||||
findpkg(Strlit *name)
|
findpkg(Strlit *name)
|
||||||
{
|
{
|
||||||
Idir *p;
|
Idir *p;
|
||||||
|
char *q;
|
||||||
|
|
||||||
if(islocalname(name)) {
|
if(islocalname(name)) {
|
||||||
|
if(debug['u'])
|
||||||
|
return 0;
|
||||||
// try .a before .6. important for building libraries:
|
// try .a before .6. important for building libraries:
|
||||||
// if there is an array.6 in the array.a library,
|
// if there is an array.6 in the array.a library,
|
||||||
// want to find all of array.a, not just array.6.
|
// want to find all of array.a, not just array.6.
|
||||||
@ -367,6 +370,18 @@ findpkg(Strlit *name)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// local imports should be canonicalized already.
|
||||||
|
// don't want to see "container/../container/vector"
|
||||||
|
// as different from "container/vector".
|
||||||
|
q = mal(name->len+1);
|
||||||
|
memmove(q, name->s, name->len);
|
||||||
|
q[name->len] = '\0';
|
||||||
|
cleanname(q);
|
||||||
|
if(strlen(q) != name->len || memcmp(q, name->s, name->len) != 0) {
|
||||||
|
yyerror("non-canonical import name %Z (%s)", name->s, q);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
for(p = idirs; p != nil; p = p->link) {
|
for(p = idirs; p != nil; p = p->link) {
|
||||||
snprint(namebuf, sizeof(namebuf), "%s/%Z.a", p->dir, name);
|
snprint(namebuf, sizeof(namebuf), "%s/%Z.a", p->dir, name);
|
||||||
if(access(namebuf, 0) >= 0)
|
if(access(namebuf, 0) >= 0)
|
||||||
|
Loading…
Reference in New Issue
Block a user