JDK-5056583 : REGRESSION: Internal Error when listing contents of shortcut to directory
  • Type: Bug
  • Component: client-libs
  • Sub-Component: javax.swing
  • Affected Version: 5.0
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_2000
  • CPU: x86
  • Submitted: 2004-06-02
  • Updated: 2004-06-04
  • Resolved: 2004-06-02
Related Reports
Duplicate :  
Description

Name: rmT116609			Date: 06/02/2004


FULL PRODUCT VERSION :
java version "1.5.0-beta2"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-beta2-b51)
Java HotSpot(TM) Client VM (build 1.5.0-beta2-b51, mixed mode, sharing)

ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows 2000 [Version 5.00.2195]

A DESCRIPTION OF THE PROBLEM :
Internal Error when listing contents of shortcut to directory

This is a Regression from previous versions of java and looks like it is related to bugs: 5050925, 5049016, 4356160 (can't tell if it is a duplicate of one of them)

Note check for isDirectory() is required due to another bug I submitted: 5009755

It was also working in versions of Java between 1.4.2 and 1.5.0-beta2

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
create a shortcut to a directory,
rename it to c:/test   (c:/test.lnk)
run code

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
no error

ERROR MESSAGES/STACK TRACES THAT OCCUR :
java.lang.InternalError: Unable to bind C:\temp\zz.lnk to parent

	at sun.awt.shell.Win32ShellFolder2.getIShellFolder(Win32ShellFolder2.java:322)

	at sun.awt.shell.Win32ShellFolder2.listFiles(Win32ShellFolder2.java:521)

	at sun.awt.shell.ShellFolder.listFiles(ShellFolder.java:100)

	at Test.main(Test.java:10)


REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
import java.io.*;
import javax.swing.*;
import sun.awt.shell.*;

public class Test {
  public static void main(String s[]) {
    try {
      File file = ShellFolder.getShellFolder(new File("c:/test.lnk"));
      if (file.isDirectory()) {
        file.listFiles();
      }
    }
    catch (Throwable ex) {
      ex.printStackTrace();
    }
  }
}
---------- END SOURCE ----------

CUSTOMER SUBMITTED WORKAROUND :
test ShellFolder.isLink() to find out if it is a link
if so get the contents of ShellFolder.getLinkLocation() instead

Release Regression From : 1.4.2
The above release value was the last known release where this 
bug was known to work. Since then there has been a regression.

(Incident Review ID: 276006) 
======================================================================

Comments
EVALUATION Name: osR10079 Date: 06/04/2004 In fact sun.awt.shell.Win32ShellFolder2 is private class and we do not provide any compatibility there. ###@###.### 2004-06-04 ======================================================================
04-06-2004