< prev index next >
src/jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 2009, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2009, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
@@ -426,15 +426,23 @@
// (1) assume all path from zip file itself is "normalized"
// (2) IndexNode.name is absolute. see IndexNode(byte[],int,int)
// (3) if parent "dir" is relative when ZipDirectoryStream
// is created, the returned child path needs to be relative
// as well.
+ // (4) if parent "dir" starts with './' or is '.' when ZipDirectoryStream
+ // is created, the returned child path needs to also start
+ // with './' as well.
byte[] cname = child.name;
- if (!dir.isAbsolute()) {
- cname = Arrays.copyOfRange(cname, 1, cname.length);
+ ZipPath zpath;
+
+ if (dir.isAbsolute()) {
+ zpath = new ZipPath(this, cname, true);
+ } else {
+ ZipPath childPath = new ZipPath(this, cname, true);
+ ZipPath childFileName = childPath.getFileName();
+ zpath = dir.resolve(childFileName);
}
- ZipPath zpath = new ZipPath(this, cname, true);
if (filter == null || filter.accept(zpath))
list.add(zpath);
child = child.sibling;
}
return list.iterator();
< prev index next >