From c500e5ec9f9e5775b633d93381282de9b55e789a Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 9 Mar 2000 04:50:49 +0000 Subject: [PATCH] natArray.cc (newInstance): Don't allow array of `void' to be created. * java/lang/reflect/natArray.cc (newInstance): Don't allow array of `void' to be created. From-SVN: r32443 --- libjava/ChangeLog | 5 ++ libjava/Makefile.in | 68 ++++++++++++++++++++------- libjava/gcj/Makefile.in | 4 +- libjava/include/Makefile.in | 4 +- libjava/java/lang/reflect/natArray.cc | 11 ++++- 5 files changed, 68 insertions(+), 24 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 2049e0158ed3..38b61f6d1e57 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2000-03-08 Tom Tromey + + * java/lang/reflect/natArray.cc (newInstance): Don't allow array + of `void' to be created. + 2000-03-08 Warren Levy * java/math/BigInteger.java(signum): Handle zero properly. diff --git a/libjava/Makefile.in b/libjava/Makefile.in index 2bfaeb0222e7..65cade913ef0 100644 --- a/libjava/Makefile.in +++ b/libjava/Makefile.in @@ -735,14 +735,15 @@ CCLD = $(CC) LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ DATA = $(data_DATA) $(toolexeclib_DATA) -DIST_COMMON = README COPYING.LIB ChangeLog Makefile.am Makefile.in NEWS \ -THANKS acinclude.m4 aclocal.m4 configure configure.in \ -libgcj-test.spec.in libgcj.spec.in +DIST_COMMON = README COPYING ChangeLog Makefile.am Makefile.in NEWS \ +THANKS acconfig.h acinclude.m4 aclocal.m4 configure configure.in \ +include/config.h.in include/stamp-h.in libgcj-test.spec.in \ +libgcj.spec.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -TAR = gtar +TAR = tar GZIP_ENV = --best DIST_SUBDIRS = @DIRLTDL@ testsuite gcj include @DIRLTDL@ gcj include DEP_FILES = .deps/$(srcdir)/$(CONVERT_DIR)/gen-from-JIS.P \ @@ -963,6 +964,34 @@ config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) + +include/config.h: include/stamp-h + @if test ! -f $@; then \ + rm -f include/stamp-h; \ + $(MAKE) include/stamp-h; \ + else :; fi +include/stamp-h: $(srcdir)/include/config.h.in $(top_builddir)/config.status + cd $(top_builddir) \ + && CONFIG_FILES= CONFIG_HEADERS=include/config.h \ + $(SHELL) ./config.status + @echo timestamp > include/stamp-h 2> /dev/null +$(srcdir)/include/config.h.in: @MAINTAINER_MODE_TRUE@$(srcdir)/include/stamp-h.in + @if test ! -f $@; then \ + rm -f $(srcdir)/include/stamp-h.in; \ + $(MAKE) $(srcdir)/include/stamp-h.in; \ + else :; fi +$(srcdir)/include/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) acconfig.h + cd $(top_srcdir) && $(AUTOHEADER) + @echo timestamp > $(srcdir)/include/stamp-h.in 2> /dev/null + +mostlyclean-hdr: + +clean-hdr: + +distclean-hdr: + -rm -f include/config.h + +maintainer-clean-hdr: libgcj.spec: $(top_builddir)/config.status libgcj.spec.in cd $(top_builddir) && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status libgcj-test.spec: $(top_builddir)/config.status libgcj-test.spec.in @@ -1288,7 +1317,7 @@ distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ + cp -pr $$/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ @@ -1403,31 +1432,33 @@ distclean-generic: -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: -mostlyclean-am: mostlyclean-toolexeclibLIBRARIES mostlyclean-compile \ - mostlyclean-libtool mostlyclean-toolexeclibLTLIBRARIES \ +mostlyclean-am: mostlyclean-hdr mostlyclean-toolexeclibLIBRARIES \ + mostlyclean-compile mostlyclean-libtool \ + mostlyclean-toolexeclibLTLIBRARIES \ mostlyclean-binPROGRAMS mostlyclean-noinstPROGRAMS \ mostlyclean-tags mostlyclean-depend mostlyclean-generic mostlyclean: mostlyclean-recursive -clean-am: clean-toolexeclibLIBRARIES clean-compile clean-libtool \ - clean-toolexeclibLTLIBRARIES clean-binPROGRAMS \ - clean-noinstPROGRAMS clean-tags clean-depend \ - clean-generic mostlyclean-am clean-local +clean-am: clean-hdr clean-toolexeclibLIBRARIES clean-compile \ + clean-libtool clean-toolexeclibLTLIBRARIES \ + clean-binPROGRAMS clean-noinstPROGRAMS clean-tags \ + clean-depend clean-generic mostlyclean-am clean-local clean: clean-recursive -distclean-am: distclean-toolexeclibLIBRARIES distclean-compile \ - distclean-libtool distclean-toolexeclibLTLIBRARIES \ - distclean-binPROGRAMS distclean-noinstPROGRAMS \ - distclean-tags distclean-depend distclean-generic \ - clean-am +distclean-am: distclean-hdr distclean-toolexeclibLIBRARIES \ + distclean-compile distclean-libtool \ + distclean-toolexeclibLTLIBRARIES distclean-binPROGRAMS \ + distclean-noinstPROGRAMS distclean-tags \ + distclean-depend distclean-generic clean-am -rm -f libtool distclean: distclean-recursive -rm -f config.status -maintainer-clean-am: maintainer-clean-toolexeclibLIBRARIES \ +maintainer-clean-am: maintainer-clean-hdr \ + maintainer-clean-toolexeclibLIBRARIES \ maintainer-clean-compile maintainer-clean-libtool \ maintainer-clean-toolexeclibLTLIBRARIES \ maintainer-clean-binPROGRAMS \ @@ -1440,7 +1471,8 @@ maintainer-clean-am: maintainer-clean-toolexeclibLIBRARIES \ maintainer-clean: maintainer-clean-recursive -rm -f config.status -.PHONY: mostlyclean-toolexeclibLIBRARIES distclean-toolexeclibLIBRARIES \ +.PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ +mostlyclean-toolexeclibLIBRARIES distclean-toolexeclibLIBRARIES \ clean-toolexeclibLIBRARIES maintainer-clean-toolexeclibLIBRARIES \ uninstall-toolexeclibLIBRARIES install-toolexeclibLIBRARIES \ mostlyclean-compile distclean-compile clean-compile \ diff --git a/libjava/gcj/Makefile.in b/libjava/gcj/Makefile.in index 060495d0dece..830733cfe875 100644 --- a/libjava/gcj/Makefile.in +++ b/libjava/gcj/Makefile.in @@ -128,7 +128,7 @@ DIST_COMMON = Makefile.am Makefile.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -TAR = gtar +TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: @@ -197,7 +197,7 @@ distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ + cp -pr $$/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ diff --git a/libjava/include/Makefile.in b/libjava/include/Makefile.in index af8cc0f9cab2..8deca2b0e6c4 100644 --- a/libjava/include/Makefile.in +++ b/libjava/include/Makefile.in @@ -127,7 +127,7 @@ DIST_COMMON = ./stamp-h.in Makefile.am Makefile.in config.h.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -TAR = gtar +TAR = tar GZIP_ENV = --best all: all-redirect .SUFFIXES: @@ -224,7 +224,7 @@ distdir: $(DISTFILES) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ + cp -pr $$/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ diff --git a/libjava/java/lang/reflect/natArray.cc b/libjava/java/lang/reflect/natArray.cc index e886f808bada..fd9536889dc9 100644 --- a/libjava/java/lang/reflect/natArray.cc +++ b/libjava/java/lang/reflect/natArray.cc @@ -1,6 +1,6 @@ // natField.cc - Implementation of java.lang.reflect.Field native methods. -/* Copyright (C) 1999 Free Software Foundation +/* Copyright (C) 1999, 2000 Free Software Foundation This file is part of libgcj. @@ -29,7 +29,14 @@ jobject java::lang::reflect::Array::newInstance (jclass componentType, jint length) { if (componentType->isPrimitive()) - return _Jv_NewPrimArray (componentType, length); + { + // We could check for this in _Jv_NewPrimArray, but that seems + // like needless overhead when the only real route to this + // problem is here. + if (componentType == JvPrimClass (void)) + throw new java::lang::IllegalArgumentException (); + return _Jv_NewPrimArray (componentType, length); + } else return JvNewObjectArray (length, componentType, NULL);