From 61650e40e53cd14cd9c2ce7e4a1ec8fd3a2b0fa0 Mon Sep 17 00:00:00 2001 From: Martin Oberhuber < martin.oberhuber@windriver.com> Date: Wed, 26 May 2010 17:02:01 +0000 Subject: [PATCH] Bug 314461 - [local] NPE trying to delete a local folder that has no permissions at all --- releng/org.eclipse.rse.build/maps/rse.map | 2 +- .../local/files/LocalFileService.java | 21 ++++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/releng/org.eclipse.rse.build/maps/rse.map b/releng/org.eclipse.rse.build/maps/rse.map index 144078bf8fb..62de2e0f945 100644 --- a/releng/org.eclipse.rse.build/maps/rse.map +++ b/releng/org.eclipse.rse.build/maps/rse.map @@ -36,7 +36,7 @@ plugin@org.eclipse.rse.processes.ui=v201003010830,:pserver:anonymous:none@dev.ec plugin@org.eclipse.rse.sdk=v201003151933,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.rse/plugins/org.eclipse.rse.sdk plugin@org.eclipse.rse.services.dstore=v201005200200,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.rse/plugins/org.eclipse.rse.services.dstore plugin@org.eclipse.rse.services.files.ftp=v201004072040,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.rse/plugins/org.eclipse.rse.services.files.ftp -plugin@org.eclipse.rse.services.local=v201003010830,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.rse/plugins/org.eclipse.rse.services.local +plugin@org.eclipse.rse.services.local=v201005261700,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.rse/plugins/org.eclipse.rse.services.local plugin@org.eclipse.rse.services.ssh=v200909160005,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.rse/plugins/org.eclipse.rse.services.ssh plugin@org.eclipse.rse.services.telnet=v200905272300,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.rse/plugins/org.eclipse.rse.services.telnet plugin@org.eclipse.rse.services=v201005221100,:pserver:anonymous:none@dev.eclipse.org:/cvsroot/dsdp,,org.eclipse.tm.rse/plugins/org.eclipse.rse.services diff --git a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/internal/services/local/files/LocalFileService.java b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/internal/services/local/files/LocalFileService.java index 30f47874124..0d685044a6d 100644 --- a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/internal/services/local/files/LocalFileService.java +++ b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/internal/services/local/files/LocalFileService.java @@ -45,6 +45,7 @@ * Martin Oberhuber (Wind River) - [285942] Throw exception when listing a non-folder * Martin Oberhuber (Wind River) - [286129][api] RemoteFileException(String) violates API contract * David McKnight (IBM) - [299140] Local Readonly file can't be copied/pasted twice + * Martin Oberhuber (Wind River) - [314461] NPE deleting a folder w/o permission *******************************************************************************/ package org.eclipse.rse.internal.services.local.files; @@ -1101,16 +1102,20 @@ public class LocalFileService extends AbstractFileService implements ILocalServi { boolean result = true; File[] files = folder.listFiles(); - for (int i = 0; i < files.length && result; i++) + if (files!=null) { - File file = files[i]; - if (file.isDirectory()) + //bug 314461: java.io.File returns null if folder has no permissions + for (int i = 0; i < files.length && result; i++) { - result = deleteContents(file, monitor); - } - else - { - result = file.delete(); + File file = files[i]; + if (file.isDirectory()) + { + result = deleteContents(file, monitor); + } + else + { + result = file.delete(); + } } } if (result)