The current version would fail if a "diamond" dependency existed, for example:
a.proto:
message A { }
b.proto:
import "a.proto";
message B { }
c.proto:
import "a.proto";
import "b.proto"; --> ERROR: Duplicate message A defined.
The previous code does have a mechanism to avoid this (the 'loaded' object) but it is not passed down to recursive calls into readProto, which is a bug.
Passing it down fixes the problem.
The current version would fail if a "diamond" dependency existed, for example: a.proto: message A { } b.proto: import "a.proto"; message B { } c.proto: import "a.proto"; import "b.proto"; --> ERROR: Duplicate message A defined.
The previous code does have a mechanism to avoid this (the 'loaded' object) but it is not passed down to recursive calls into readProto, which is a bug. Passing it down fixes the problem.