[Kaffe] new patch for Class.c

Moses DeJong dejong at cs.umn.edu
Fri Jan 15 17:37:18 PST 1999


Looks like my patch for libraries/clib/native/Class.c was not correct.
The sig check did not work for methods that return anything other than
void. Here is a patch for the code in the CVS that fixes the problem.


  
*** Class.c     Fri Jan 15 19:35:06 1999
--- copy_Class.c        Fri Jan 15 19:29:02 1999
***************
*** 705,711 ****
         * parameter to all get(Declared){Method|Constructor} functions
         * is treated like passing an empty array "new Class [] {}"
         */
!       if ((argtypes == NULL) && !strcmp(sig,"()V")) {
                return (1);
        }
  
--- 705,712 ----
         * parameter to all get(Declared){Method|Constructor} functions
         * is treated like passing an empty array "new Class [] {}"
         */
!       if ((argtypes == NULL) &&
!               (sig[0] == '(') && (sig[1] == ')')) {
                return (1);
        }




Here is a test case that shows the problem with the latest code
in the CVS. It will work correctly after this patch has been applied.



import java.lang.reflect.*;
import java.util.*;

public class MethodBug {
    public static void main(String[] argv) throws Exception {
	Method m1 = MethodBug.class.getMethod("m1", null);
	System.out.println("m1 is " + m1);

	Method m2 = MethodBug.class.getMethod("m2", null);
	System.out.println("m2 is " + m2);
    }

    public void m1() {}
    public String m2() {return null;}
}




thanks
mo dejong
dejong at cs.umn.edu



More information about the kaffe mailing list