History

Fixed one serious bug in not creating Class instances

Dmitry Kabak (userdima committed 13 years ago

Commit 87f5efe1 parent 45652ca2 files · +30 −1Browse files

Showing the changes to java (2 of 2 files). Show all

Unified · Split

2 files
  1. java/appl/java/jni.b +24 −1
  2. java/module/jni.m +6 −0
java/appl/java/jni.b+24−1
@@ -29,6 +29,25 @@ GetVersion() : int · 28 unmodified lines
2929 return( JNI_VER );
3030 }
3131
32+InternalFindClass( name : string ) : ClassData
33+{
34+ # return class data adt used by the Java Loader
35+ # which stores all the class information.
36+ # WARNING: does not loads the class. Only use
37+ # when you know what you are doing
38+ # WARNING: arrays are not supported.
39+
40+ # replace all ocurrences of "." with "/" in name
41+ newname : string;
42+ for(x:=0;x<len name; x++)
43+ {
44+ if (name[x]=='.')
45+ newname[x] = '/';
46+ else
47+ newname[x] = name[x];
48+ }
49+ return jldr->getclass(newname);
50+}
3251
3352 FindClass( name : string ) : ClassData
3453 {
@@ -712,7 +731,10 @@ NewClassObject( targ_class : ClassData ) : JClass · 677 unmodified lines
712731 {
713732 # create an instance of java.lang.Class
714733 cl_data := classclass();
715− return( JClass(classclass().moddata, targ_class, nil) );
734+ object := cast->ToJClass(NewObject(cl_data));
735+ object.class = targ_class;
736+
737+ return( object );
716738 }
717739
718740
@@ -944,6 +966,7 @@ MainThreadGroup() : JObject · 225 unmodified lines
944966
945967 FatalError( msg : string )
946968 {
969+ sys->print("Fatal error: %s\n", msg);
947970 ThrowException( "java/lang/InternalError", msg );
948971 }
949972
java/module/jni.m+6−0
@@ -345,6 +345,12 @@ JNI : module · 344 unmodified lines
345345 #
346346 FindClass : fn( name : string ) : ClassData;
347347
348+ #
349+ # Find the class data for a given class name.
350+ # Will NOT load the class if necessary.
351+ #
352+ InternalFindClass : fn( name : string ) : ClassData;
353+
348354 #
349355 # Return the class's superclass data.
350356 #