diff options
| author | Andrew Gvozdev | 2013-03-10 11:05:35 +0000 |
|---|---|---|
| committer | Andrew Gvozdev | 2013-03-10 11:48:11 +0000 |
| commit | e034731fee40a363a2a40f3f843890357e506abb (patch) | |
| tree | f7f76fb1aa41b3bc71b156d4548a3e7d9cdbadf5 | |
| parent | 180b19205413a0d73baf1a19adf98c816b38d3fb (diff) | |
| download | org.eclipse.cdt-e034731fee40a363a2a40f3f843890357e506abb.tar.gz org.eclipse.cdt-e034731fee40a363a2a40f3f843890357e506abb.tar.xz org.eclipse.cdt-e034731fee40a363a2a40f3f843890357e506abb.zip | |
bug 357442: Protect EnvVarCollector against NPE when array of environment variables contains null
| -rw-r--r-- | core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EnvVarCollector.java | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EnvVarCollector.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EnvVarCollector.java index 9538ddbcdff..eeb88c41b0f 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EnvVarCollector.java +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/envvar/EnvVarCollector.java @@ -49,26 +49,28 @@ public class EnvVarCollector { boolean isCaseInsensitive = !EnvironmentVariableManager.getDefault().isVariableCaseSensitive(); for(int i = 0; i < vars.length; i ++) { IEnvironmentVariable var = vars[i]; - String name = var.getName(); - if(isCaseInsensitive) - name = name.toUpperCase(); - - boolean noCheck = false; - - if(fMap == null){ - noCheck = true; - fMap = new HashMap<String, EnvVarDescriptor>(); - } - - EnvVarDescriptor des = null; - if(noCheck || (des = fMap.get(name)) == null){ - des = new EnvVarDescriptor(var,info,num, supplier); - fMap.put(name,des); - } - else { - des.setContextInfo(info); - des.setSupplierNum(num); - des.setVariable(EnvVarOperationProcessor.performOperation(des.getOriginalVariable(),var)); + if (var != null) { + String name = var.getName(); + if(isCaseInsensitive) + name = name.toUpperCase(); + + boolean noCheck = false; + + if(fMap == null){ + noCheck = true; + fMap = new HashMap<String, EnvVarDescriptor>(); + } + + EnvVarDescriptor des = null; + if(noCheck || (des = fMap.get(name)) == null){ + des = new EnvVarDescriptor(var,info,num, supplier); + fMap.put(name,des); + } + else { + des.setContextInfo(info); + des.setSupplierNum(num); + des.setVariable(EnvVarOperationProcessor.performOperation(des.getOriginalVariable(),var)); + } } } } |
