JDK-7122726 : Path.relativize returns incorrect result if path contains ".."
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.nio
  • Affected Version: 7
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_7
  • CPU: x86
  • Submitted: 2011-12-19
  • Updated: 2012-08-03
  • Resolved: 2011-12-19
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
java version "1.7.0_02"
Java(TM) SE Runtime Environment (build 1.7.0_02-b13)
Java HotSpot(TM) 64-Bit Server VM (build 22.0-b10, mixed mode)


ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows [Version 6.1.7601]

A DESCRIPTION OF THE PROBLEM :
This issue is related to bug #6925169.

The relativize method doesn't handle ".." correctly.

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Run attached testcase.


REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
import java.io.File;
import java.nio.file.Path;

public class Test {

    public static void main(String[] args) {
        Path p1 = new File("/a/b/..").toPath();
        Path p2 = new File("/a").toPath();
        Path q = new File("/c/d").toPath();
        Path first = p1.relativize(q).normalize();
        Path second = p2.relativize(q).normalize();
        assert (first.equals(second)) : "first: " + first + ", second: " + second;
    }
}

---------- END SOURCE ----------

Comments
EVALUATION Once 6925169 is fixed then it will fix this too.
19-12-2011