changeset 6838:7a40901e0d5c

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
author minqi
date Mon, 08 Oct 2012 16:48:52 -0700
parents fab6fbf427d2
children 0e8ca886e4e1
files agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java agent/src/share/native/sadis.c
diffstat 2 files changed, 5 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java	Sun Sep 30 23:24:12 2012 +0100
+++ b/agent/src/share/classes/sun/jvm/hotspot/tools/jcore/ClassWriter.java	Mon Oct 08 16:48:52 2012 -0700
@@ -354,15 +354,14 @@
     }
 
     protected void writeFields() throws IOException {
-        U2Array fields = klass.getFields();
-        final int length = (int) fields.length();
+        final int javaFieldsCount = klass.getJavaFieldsCount();
 
         // 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);
             dos.writeShort(accessFlags & (short) JVM_RECOGNIZED_FIELD_MODIFIERS);
 
--- a/agent/src/share/native/sadis.c	Sun Sep 30 23:24:12 2012 +0100
+++ b/agent/src/share/native/sadis.c	Mon Oct 08 16:48:52 2012 -0700
@@ -46,7 +46,7 @@
 
 #else
 
-#include <strings.h>
+#include <string.h>
 #include <dlfcn.h>
 #include <link.h>