提交 b4977f9a 编写于 作者: M minqi

8000332: SA ClassDump throws exception after permgen removal

Summary: In ClassWrite.writeFields(), fields count was mistakenly set to fields length which overflow the array index. Also removed a file which is leftover from 6879063 changeset.
Reviewed-by: coleenp, sspitsyn
Contributed-by: yumin.qi@oracle.com
上级 cbe3cf3d
...@@ -354,15 +354,14 @@ public class ClassWriter implements /* imports */ ClassConstants ...@@ -354,15 +354,14 @@ public class ClassWriter implements /* imports */ ClassConstants
} }
protected void writeFields() throws IOException { protected void writeFields() throws IOException {
U2Array fields = klass.getFields(); final int javaFieldsCount = klass.getJavaFieldsCount();
final int length = (int) fields.length();
// write number of fields // write number of fields
dos.writeShort((short) length); dos.writeShort((short) javaFieldsCount);
if (DEBUG) debugMessage("number of fields = " + length); if (DEBUG) debugMessage("number of fields = " + javaFieldsCount);
for (int index = 0; index < length; index++) { for (int index = 0; index < javaFieldsCount; index++) {
short accessFlags = klass.getFieldAccessFlags(index); short accessFlags = klass.getFieldAccessFlags(index);
dos.writeShort(accessFlags & (short) JVM_RECOGNIZED_FIELD_MODIFIERS); dos.writeShort(accessFlags & (short) JVM_RECOGNIZED_FIELD_MODIFIERS);
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
#else #else
#include <strings.h> #include <string.h>
#include <dlfcn.h> #include <dlfcn.h>
#include <link.h> #include <link.h>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册