PatchSet 4908 
Date: 2004/07/08 10:00:07
Author: hkraemer
Branch: HEAD
Tag: (none) 
Log:
small fix for setting user properties and objectinputstream

Members: 
        ChangeLog:1.2474->1.2475 
        libraries/clib/io/ObjectInputStream.c:1.3->1.4 
        libraries/clib/native/System.c:1.49->1.50 

Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.2474 kaffe/ChangeLog:1.2475
--- kaffe/ChangeLog:1.2474      Thu Jul  8 09:04:54 2004
+++ kaffe/ChangeLog     Thu Jul  8 10:00:07 2004
@@ -1,3 +1,16 @@
+2004-07-08  Helmer Kraemer  <[EMAIL PROTECTED]>
+
+       * libraries/clib/native/System.c (java_lang_System_initProperties): 
+       don't free prop->value, since it's in the same string as prop->key
+
+       * libraries/clib/io/ObjectInputStream.c (getFieldAddress): new function
+       (java_io_VMObjectStreamClass_setBooleanNative, 
java_io_VMObjectStreamClass_setByteNative,
+       java_io_VMObjectStreamClass_setCharNative,  
java_io_VMObjectStreamClass_setShortNative,
+       java_io_VMObjectStreamClass_setIntNative, 
java_io_VMObjectStreamClass_setLongNative,
+       java_io_VMObjectStreamClass_setFloatNative, 
java_io_VMObjectStreamClass_setDoubleNative,
+       java_io_VMObjectStreamClass_setObjectNative): don't use 
java_lang_reflect_Field_*
+       methods for setting the field, since they're in another libtool module
+       
 2004-07-08  Dalibor Topic  <[EMAIL PROTECTED]>
            Yoshiharu Oba  <[EMAIL PROTECTED]>
 
Index: kaffe/libraries/clib/io/ObjectInputStream.c
diff -u kaffe/libraries/clib/io/ObjectInputStream.c:1.3 
kaffe/libraries/clib/io/ObjectInputStream.c:1.4
--- kaffe/libraries/clib/io/ObjectInputStream.c:1.3     Mon Jul  5 16:40:51 2004
+++ kaffe/libraries/clib/io/ObjectInputStream.c Thu Jul  8 10:00:13 2004
@@ -83,13 +83,22 @@
        return (meth != NULL);          
 }
 
+static void*
+getFieldAddress (struct Hjava_lang_reflect_Field* sfield, struct Hjava_lang_Object 
*obj)
+{
+       if (unhand(sfield)->slot < CLASS_NSFIELDS(OBJECT_CLASS(obj))) {
+               SignalError ("java.lang.IllegalArgumentException", "");
+       }
+
+       return (void *)((uintp)obj + FIELD_BOFFSET(CLASS_FIELDS(OBJECT_CLASS(obj)) + 
unhand(sfield)->slot));
+}
 
 void java_io_VMObjectStreamClass_setBooleanNative
                 (struct Hjava_lang_reflect_Field* sfield,
                 struct Hjava_lang_Object* obj,
                 jboolean value)
 {
-  java_lang_reflect_Field_setBoolean0(sfield, obj, value);
+       *(jboolean *)getFieldAddress (sfield, obj) = value;
 }
 
 void java_io_VMObjectStreamClass_setByteNative
@@ -97,7 +106,7 @@
                 struct Hjava_lang_Object* obj,
                 jbyte value)
 {
-  java_lang_reflect_Field_setByte0(sfield, obj, value);
+       *(jbyte *)getFieldAddress (sfield, obj) = value;
 }
 
 void java_io_VMObjectStreamClass_setCharNative
@@ -105,7 +114,7 @@
                 struct Hjava_lang_Object* obj,
                 jchar value)
 {
-  java_lang_reflect_Field_setChar0(sfield, obj, value);
+       *(jchar *)getFieldAddress (sfield, obj) = value;
 }
 
 void java_io_VMObjectStreamClass_setShortNative
@@ -113,7 +122,7 @@
                 struct Hjava_lang_Object* obj,
                 jshort value)
 {
-  java_lang_reflect_Field_setShort0(sfield, obj, value);
+       *(jshort *)getFieldAddress (sfield, obj) = value;
 }
 
 void java_io_VMObjectStreamClass_setIntNative
@@ -121,7 +130,7 @@
                 struct Hjava_lang_Object* obj,
                 jint value)
 {
-  java_lang_reflect_Field_setInt0(sfield, obj, value);
+       *(jint *)getFieldAddress (sfield, obj) = value;
 }
 
 void java_io_VMObjectStreamClass_setLongNative
@@ -129,7 +138,7 @@
                 struct Hjava_lang_Object* obj,
                 jlong value)
 {
-  java_lang_reflect_Field_setLong0(sfield, obj, value);
+       *(jlong *)getFieldAddress (sfield, obj) = value;
 }
 
 void java_io_VMObjectStreamClass_setFloatNative
@@ -137,7 +146,7 @@
                 struct Hjava_lang_Object* obj,
                 jfloat value)
 {
-  java_lang_reflect_Field_setFloat0(sfield, obj, value);
+       *(jfloat *)getFieldAddress (sfield, obj) = value;
 }
 
 void java_io_VMObjectStreamClass_setDoubleNative
@@ -145,7 +154,7 @@
                 struct Hjava_lang_Object* obj,
                 jdouble value)
 {
-  java_lang_reflect_Field_setDouble0(sfield, obj, value);
+       *(jdouble *)getFieldAddress (sfield, obj) = value;
 }
 
 void java_io_VMObjectStreamClass_setObjectNative
@@ -153,5 +162,5 @@
                 struct Hjava_lang_Object* obj, 
                 struct Hjava_lang_Object* value)
 {
-  java_lang_reflect_Field_setObject0(sfield, obj, value);
+       *(struct Hjava_lang_Object **)getFieldAddress (sfield, obj) = value;
 }
Index: kaffe/libraries/clib/native/System.c
diff -u kaffe/libraries/clib/native/System.c:1.49 
kaffe/libraries/clib/native/System.c:1.50
--- kaffe/libraries/clib/native/System.c:1.49   Tue Jul  6 16:26:42 2004
+++ kaffe/libraries/clib/native/System.c        Thu Jul  8 10:00:12 2004
@@ -373,7 +373,6 @@
                userProperty *nextProperty = prop->next;
 
                free(prop->key);
-               free(prop->value);
                free(prop);
                prop = nextProperty;
        }

_______________________________________________
kaffe mailing list
[EMAIL PROTECTED]
http://kaffe.org/cgi-bin/mailman/listinfo/kaffe

Reply via email to