Bug 405539 - Launching arguments are not correctly transferred into run
configuration

Signed-off-by: Vikas Chandra <Vikas.Chandra@in.ibm.com>
diff --git a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/LaunchAction.java b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/LaunchAction.java
index dc3892a..c1f6a37 100644
--- a/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/LaunchAction.java
+++ b/ui/org.eclipse.pde.ui/src/org/eclipse/pde/internal/ui/launcher/LaunchAction.java
@@ -149,12 +149,16 @@
 		List<String> initialArgsList = Arrays.asList(DebugPlugin.splitArguments(initialArgs.toString()));
 		if (userArgs != null && userArgs.length() > 0) {
 			List<String> userArgsList = Arrays.asList(DebugPlugin.splitArguments(userArgs));
+			boolean previousHasSubArgument = false;
 			for (Iterator<String> iterator = userArgsList.iterator(); iterator.hasNext();) {
 				Object userArg = iterator.next();
-				if (!initialArgsList.contains(userArg)) {
+				boolean hasSubArgument = userArg.toString().equals('-' + IEnvironment.P_OS) || userArg.toString().equals('-' + IEnvironment.P_WS);
+				hasSubArgument = hasSubArgument || userArg.toString().equals('-' + IEnvironment.P_ARCH) || userArg.toString().equals('-' + IEnvironment.P_NL);
+				if (!initialArgsList.contains(userArg) || hasSubArgument || previousHasSubArgument) {
 					initialArgs.append(' ');
 					initialArgs.append(userArg);
 				}
+				previousHasSubArgument = hasSubArgument;
 			}
 		}
 		return initialArgs.toString();