@@ -94,6 +94,16 @@ Root.prototype.load = function load(filename, options, callback) {
9494 throw err ;
9595 cb ( err , root ) ;
9696 }
97+
98+ // Bundled definition existence checking
99+ function getBundledFileName ( filename ) {
100+ const idx = filename . lastIndexOf ( "google/protobuf/" ) ;
101+ if ( idx > - 1 ) {
102+ var altname = filename . substring ( idx ) ;
103+ if ( altname in common ) return altname ;
104+ }
105+ return null ;
106+ }
97107
98108 // Processes a single file
99109 function process ( filename , source ) {
@@ -109,11 +119,11 @@ Root.prototype.load = function load(filename, options, callback) {
109119 i = 0 ;
110120 if ( parsed . imports )
111121 for ( ; i < parsed . imports . length ; ++ i )
112- if ( resolved = self . resolvePath ( filename , parsed . imports [ i ] ) )
122+ if ( resolved = ( getBundledFileName ( parsed . imports [ i ] ) || self . resolvePath ( filename , parsed . imports [ i ] ) ) )
113123 fetch ( resolved ) ;
114124 if ( parsed . weakImports )
115125 for ( i = 0 ; i < parsed . weakImports . length ; ++ i )
116- if ( resolved = self . resolvePath ( filename , parsed . weakImports [ i ] ) )
126+ if ( resolved = ( getBundledFileName ( parsed . weakImports [ i ] ) || self . resolvePath ( filename , parsed . weakImports [ i ] ) ) )
117127 fetch ( resolved , true ) ;
118128 }
119129 } catch ( err ) {
@@ -126,14 +136,6 @@ Root.prototype.load = function load(filename, options, callback) {
126136 // Fetches a single file
127137 function fetch ( filename , weak ) {
128138
129- // Strip path if this file references a bundled definition
130- var idx = filename . lastIndexOf ( "google/protobuf/" ) ;
131- if ( idx > - 1 ) {
132- var altname = filename . substring ( idx ) ;
133- if ( altname in common )
134- filename = altname ;
135- }
136-
137139 // Skip if already loaded / attempted
138140 if ( self . files . indexOf ( filename ) > - 1 )
139141 return ;
0 commit comments