提交 3b835924 编写于 作者: K ksrini

6735320: StringIndexOutOfBoundsException for empty @serialField tag

Reviewed-by: jjg, bpatel
上级 1b8d85f1
/*
* Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -80,6 +80,9 @@ class SerialFieldTagImpl
*/
private void parseSerialFieldString() {
int len = text.length();
if (len == 0) {
return;
}
// if no white space found
/* Skip white space. */
......
/*
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
import java.io.ObjectStreamField;
import java.io.Serializable;
public class SerialFieldTest implements Serializable {
/**
* @serialField
*/
private static final ObjectStreamField[] serialPersistentFields = {
new ObjectStreamField("i", int.class),
};
}
/*
* Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/*
* @test
* @bug 6735320
* @summary javadoc throws exception if serialField value is missing
* @library ../lib/
* @build JavadocTester T6735320
* @run main T6735320
*/
public class T6735320 extends JavadocTester {
private static final String BUG_ID = "6735320";
private static final String[] ARGS = new String[]{
"-d", BUG_ID + ".out",
SRC_DIR + FS + "SerialFieldTest.java"
};
public String getBugId() {
return BUG_ID;
}
public String getBugName() {
return getClass().getName();
}
public static void main(String... args) {
T6735320 tester = new T6735320();
if (tester.runJavadoc(ARGS) != 0) {
throw new AssertionError("non-zero return code from javadoc");
}
if (tester.getErrorOutput().contains("StringIndexOutOfBoundsException")) {
throw new AssertionError("javadoc threw StringIndexOutOfBoundsException");
}
}
}
/*
* Copyright (c) 2002, 2009, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2002, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
......@@ -197,8 +197,13 @@ public abstract class JavadocTester {
initOutputBuffers();
ByteArrayOutputStream stdout = new ByteArrayOutputStream();
PrintStream prev = System.out;
PrintStream prevOut = System.out;
System.setOut(new PrintStream(stdout));
ByteArrayOutputStream stderr = new ByteArrayOutputStream();
PrintStream prevErr = System.err;
System.setErr(new PrintStream(stderr));
int returnCode = com.sun.tools.javadoc.Main.execute(
getBugName(),
new PrintWriter(errors, true),
......@@ -207,8 +212,11 @@ public abstract class JavadocTester {
docletClass,
getClass().getClassLoader(),
args);
System.setOut(prev);
System.setOut(prevOut);
standardOut = new StringBuffer(stdout.toString());
System.setErr(prevErr);
errors.write(NL + stderr.toString());
printJavadocOutput();
return returnCode;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册