You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by ge...@apache.org on 2006/10/24 20:51:28 UTC
svn commit: r467437 - in /incubator/harmony/enhanced/drlvm/trunk:
src/test/harmony-1800/ src/test/harmony-1800/testExec1.java
vm/vmcore/src/kernel_classes/javasrc/java/lang/Runtime.java
Author: geirm
Date: Tue Oct 24 11:51:27 2006
New Revision: 467437
URL: http://svn.apache.org/viewvc?view=rev&rev=467437
Log:
HARMONY-1800
Test case and fix - fix solves problem, and does no harm.
Ubuntu 6 - c-unit-, smoke, ~kernel
Added:
incubator/harmony/enhanced/drlvm/trunk/src/test/harmony-1800/
incubator/harmony/enhanced/drlvm/trunk/src/test/harmony-1800/testExec1.java (with props)
Modified:
incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Runtime.java
Added: incubator/harmony/enhanced/drlvm/trunk/src/test/harmony-1800/testExec1.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/src/test/harmony-1800/testExec1.java?view=auto&rev=467437
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/src/test/harmony-1800/testExec1.java (added)
+++ incubator/harmony/enhanced/drlvm/trunk/src/test/harmony-1800/testExec1.java Tue Oct 24 11:51:27 2006
@@ -0,0 +1,43 @@
+import junit.framework.TestCase;
+import java.io.*;
+public class testExec1 extends TestCase {
+
+ public void testExec() {
+ String [] cmdL = new String[5];
+ cmdL[0] = System.getProperty("java.home")+File.separator+"bin"+File.separator+"java";
+ cmdL[1] = "-classpath";
+ cmdL[2] = ".";
+ cmdL[3] = "testExec1_App";
+ cmdL[4] = null;
+ try {
+ Process p = Runtime.getRuntime().exec(cmdL);
+ p.waitFor();
+ int ans = p.exitValue();
+ InputStream is = p.getErrorStream();
+ int toRead = is.available();
+ byte[] out = new byte[100];
+ int sz = 0;
+ while (true) {
+ int r = is.read();
+ if (r == -1) {
+ break;
+ }
+ out[sz] = (byte)r;
+ sz++;
+ if (sz == 100) {
+ break;
+ }
+ }
+ System.out.println("========Application error message======");
+ System.out.println(new String (out, 0, sz));
+ System.out.println("=======================================");
+
+ fail("NullPointerException was not thrown. exitValue = " + ans);
+ } catch (NullPointerException e) {
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail("Unexpected exception was thrown: " + e);
+ }
+ }
+}
+
Propchange: incubator/harmony/enhanced/drlvm/trunk/src/test/harmony-1800/testExec1.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Runtime.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Runtime.java?view=diff&rev=467437&r1=467436&r2=467437
==============================================================================
--- incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Runtime.java (original)
+++ incubator/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Runtime.java Tue Oct 24 11:51:27 2006
@@ -683,6 +683,17 @@
if (command.length() == 0) {
throw new IllegalArgumentException();
}
+ if (envp != null) {
+ if (envp.length != 0) {
+ for (int i = 0; i < envp.length; i++) {
+ if (envp[i] == null) {
+ throw new NullPointerException("An element of envp shouldn't be empty.");
+ }
+ }
+ } else {
+ envp = null;
+ }
+ }
StringTokenizer st = new StringTokenizer(command);
String[] cmdarray = new String[st.countTokens()];
@@ -738,10 +749,22 @@
if (cmdarray.length == 0) {
throw new IndexOutOfBoundsException();
}
- //XXX:
- //#IN004# Should we check cmdarray's direction values: cmdarray[i] != null ?
- //#IN004# Should we check: envp != null ?
- //#IN004# Should we check envp's direction values: envp[i] != null ?
+ for (int i = 0; i < cmdarray.length; i++) {
+ if (cmdarray[i] == null) {
+ throw new NullPointerException("An element of cmdarray shouldn't be empty.");
+ }
+ }
+ if (envp != null) {
+ if (envp.length != 0) {
+ for (int i = 0; i < envp.length; i++) {
+ if (envp[i] == null) {
+ throw new NullPointerException("An element of envp shouldn't be empty.");
+ }
+ }
+ } else {
+ envp = null;
+ }
+ }
String dirPathName = (dir != null ? dir.getPath() : null);