Index: xvfs-create-c.c
==================================================================
--- xvfs-create-c.c
+++ xvfs-create-c.c
@@ -345,10 +345,11 @@
 	xvfs_state.children    = malloc(sizeof(*xvfs_state.children) * xvfs_state.child_len);
 
 #define parse_xvfs_minirivet_getbyte(var) var = fgetc(fp); if (var == EOF) { break; }
 
 	mode = XVFS_MINIRIVET_MODE_COPY;
+	tcl_buffer_p = NULL;
 	while (1) {
 		parse_xvfs_minirivet_getbyte(ch);
 
 		switch (mode) {
 			case XVFS_MINIRIVET_MODE_COPY:

Index: xvfs-create-synthetic
==================================================================
--- xvfs-create-synthetic
+++ xvfs-create-synthetic
@@ -19,16 +19,26 @@
 dict set ::myOwnVFS "xvfs-create-synthetic" {
 	type file
 }
 
 proc ::xvfs::callback::addOutputFiles {fsName} {
+	for {set i 0} {$i < 100000} {incr i} {
+		set filename [expr rand()]
+		::xvfs::processFile $fsName "" $filename [dict create type file fileContents [expr rand()]]
+		lappend retval $filename
+	}
+
+	dict set ::myOwnVFS "" children [list foo xvfs-create-synthetic {*}$retval]
+
 	dict for {outputName fileContentsDict} $::myOwnVFS {
 		set inputFile $outputName
 		if {[dict exists $fileContentsDict inputFile]} {
 			set inputFile [dict get $fileContentsDict inputFile]
 		}
 		::xvfs::processFile $fsName $inputFile $outputName $fileContentsDict
 	}
-	return [dict keys $::myOwnVFS]
+	lappend retval {*}[dict keys $::myOwnVFS]
+
+	return $retval
 }
 
 ::xvfs::run --directory [pwd] --name synthetic

Index: xvfs-test-phf
==================================================================
--- xvfs-test-phf
+++ xvfs-test-phf
@@ -16,10 +16,10 @@
 
 for {set idx 0} {$idx < [llength $list]} {incr idx} {
 	set subList [lrange $list 0 $idx]
 	puts "$idx ($subList):"
 	puts [time {
-		puts [::xvfs::generatePerfectHashFunctionCall pathName strlen(pathName) -1 $subList triesAtHashSize 1]
+		puts [::xvfs::generatePerfectHashFunctionCall pathName strlen(pathName) -1 $subList useCacheFirst true]
 	} 1]
 	puts ""
 }