diff options
-rw-r--r-- | libjava/ChangeLog | 7 | ||||
-rw-r--r-- | libjava/testsuite/libjava.lang/PR20056.java | 13 | ||||
-rw-r--r-- | libjava/testsuite/libjava.lang/PR20056.out | 1 | ||||
-rw-r--r-- | libjava/verify.cc | 8 |
4 files changed, 25 insertions, 4 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 808f527..11b3228 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,10 @@ +2005-02-18 Tom Tromey <tromey@redhat.com> + + PR java/20056: + * verify.cc (type::equals): Fixed test. + * testsuite/libjava.lang/PR20056.out: New file. + * testsuite/libjava.lang/PR20056.java: New file. + 2005-02-18 Bryce McKinlay <mckinlay@redhat.com> * java/util/LinkedHashMap (addEntry): Call remove() with key argument, diff --git a/libjava/testsuite/libjava.lang/PR20056.java b/libjava/testsuite/libjava.lang/PR20056.java new file mode 100644 index 0000000..f73eb7f --- /dev/null +++ b/libjava/testsuite/libjava.lang/PR20056.java @@ -0,0 +1,13 @@ +public class PR20056 { + int x; + PR20056(int x) {} + PR20056(PR20056 f) { + // The verifier rejected the generated code in this case. + this(f.x = 0); + } + + public static void main(String[] args) + { + System.out.println("maude"); + } +} diff --git a/libjava/testsuite/libjava.lang/PR20056.out b/libjava/testsuite/libjava.lang/PR20056.out new file mode 100644 index 0000000..b3668c4 --- /dev/null +++ b/libjava/testsuite/libjava.lang/PR20056.out @@ -0,0 +1 @@ +maude diff --git a/libjava/verify.cc b/libjava/verify.cc index 9df0316..a809307 100644 --- a/libjava/verify.cc +++ b/libjava/verify.cc @@ -754,10 +754,10 @@ private: bool equals (const type &other, _Jv_BytecodeVerifier *vfy) { // Only works for reference types. - if (key != reference_type - || key != uninitialized_reference_type - || other.key != reference_type - || other.key != uninitialized_reference_type) + if ((key != reference_type + && key != uninitialized_reference_type) + || (other.key != reference_type + && other.key != uninitialized_reference_type)) return false; // Only for single-valued types. if (klass->ref_next || other.klass->ref_next) |