Fix interning in PathFragment.create(char, bool, String[])

--
MOS_MIGRATED_REVID=125721556
diff --git a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
index f856cb8..9d65922 100644
--- a/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
+++ b/src/main/java/com/google/devtools/build/lib/vfs/PathFragment.java
@@ -87,7 +87,7 @@
     for (int i = 0; i < segments.length; i++) {
       internedSegments[i] = StringCanonicalizer.intern(segments[i]);
     }
-    return new PathFragment(driveLetter, isAbsolute, segments);
+    return new PathFragment(driveLetter, isAbsolute, internedSegments);
   }
 
   // We have 3 word-sized fields (segments, hashCode and path), and 2
diff --git a/src/test/java/com/google/devtools/build/lib/vfs/PathFragmentTest.java b/src/test/java/com/google/devtools/build/lib/vfs/PathFragmentTest.java
index 26e15cb..ac34ec0 100644
--- a/src/test/java/com/google/devtools/build/lib/vfs/PathFragmentTest.java
+++ b/src/test/java/com/google/devtools/build/lib/vfs/PathFragmentTest.java
@@ -49,6 +49,22 @@
   }
 
   @Test
+  public void testCreateInternsPathFragments() {
+    String[] firstSegments = new String[] {"hello", "world"};
+    PathFragment first = PathFragment.create(
+        /*driveLetter=*/ '\0', /*isAbsolute=*/ false, firstSegments);
+
+    String[] secondSegments = new String[] {new String("hello"), new String("world")};
+    PathFragment second = PathFragment.create(
+        /*driveLetter=*/ '\0', /*isAbsolute=*/ false, secondSegments);
+
+    assertThat(first.segmentCount()).isEqualTo(second.segmentCount());
+    for (int i = 0; i < first.segmentCount(); i++) {
+      assertThat(first.getSegment(i)).isSameAs(second.getSegment(i));
+    }
+  }
+
+  @Test
   public void testEqualsAndHashCode() {
     InMemoryFileSystem filesystem = new InMemoryFileSystem();
 
@@ -225,7 +241,7 @@
     assertEquals(fooBarAbs,
                  new PathFragment("/foo/bar/..").getParentDirectory());
   }
-  
+
   @Test
   public void testSegmentsCount() {
     assertEquals(2, new PathFragment("foo/bar").segmentCount());
@@ -505,7 +521,7 @@
     assertEquals(".", PathFragment.EMPTY_FRAGMENT.getSafePathString());
     assertEquals("abc/def", new PathFragment("abc/def").getSafePathString());
   }
-  
+
   @Test
   public void testNormalize() {
     assertEquals(new PathFragment("/a/b"), new PathFragment("/a/b").normalize());