diff --git a/src/modulecache.d b/src/modulecache.d index 7df5064..65be38a 100644 --- a/src/modulecache.d +++ b/src/modulecache.d @@ -164,13 +164,13 @@ struct ModuleCache return null; const(Token)[] tokens; - { + auto parseStringCache = StringCache(StringCache.defaultBucketCount); + { ubyte[] source = cast(ubyte[]) Mallocator.it.allocate(fileSize); scope (exit) Mallocator.it.deallocate(source); f.rawRead(source); LexerConfig config; config.fileName = cachedLocation; - auto parseStringCache = StringCache(StringCache.defaultBucketCount); // The first three bytes are sliced off here if the file starts with a // Unicode byte order mark. The lexer/parser don't handle them. @@ -178,7 +178,7 @@ struct ModuleCache (source.length >= 3 && source[0 .. 3] == "\xef\xbb\xbf"c) ? source[3 .. $] : source, config, &parseStringCache); - } + } auto semanticAllocator = scoped!(CAllocatorImpl!(BlockAllocator!(1024 * 64))); Module m = parseModuleSimple(tokens[], cachedLocation, semanticAllocator);