invoking setLabel after adding a menu item crashes VM on win NT (1.1.6 Build F)

XMLWordPrintable

    • 1.1.6
    • generic, x86
    • generic, windows_95, windows_nt
    • Verified

        Compile and run the following (2) java files. This will crash on NT.
        Calling setLabel before the add() will prevent the program from crashing, but
        there may be class files being run than invoke the methods in this order.

        This occurs in 1.1.6 Build F and previous builds (D and E).

        //---Begin menu_test.java----
        /*
            menu_test.java

            NOTE: This file is a generated file.
                  Do not modify it by hand!
        */
        // add your custom import statements here

        class menu_test extends Object
        {
            public menu_test()
            {
                super();
            }
            public static void main(String args[])
            {
                menu_test app = new menu_test();
                app.StartApp(args);
                app.RunApp(args);
                app.EndApp(args);
            }
            public void StartApp(String args[])
            {
            }
            public void RunApp(String args[])
            {
                CreateMainForm();
            }
            public void EndApp(String args[])
            {
            }
            public Form1 CreateMainForm()
            {
                Form1 form = new Form1();
                form.setMainForm(true);
                try {
                    form.create();
                } catch ( java.lang.Exception __e ) { System.err.println( __e.toString() + " " + __e.getMessage() ); }
                return form;
            }
            // add your data members here

        }

        sunagain% cat !$
        cat menu_test.java
        /*
            menu_test.java

            NOTE: This file is a generated file.
                  Do not modify it by hand!
        */
        // add your custom import statements here

        class menu_test extends Object
        {
            public menu_test()
            {
                super();
            }
            public static void main(String args[])
            {
                menu_test app = new menu_test();
                app.StartApp(args);
                app.RunApp(args);
                app.EndApp(args);
            }
            public void StartApp(String args[])
            {
            }
            public void RunApp(String args[])
            {
                CreateMainForm();
            }
            public void EndApp(String args[])
            {
            }
            public Form1 CreateMainForm()
            {
                Form1 form = new Form1();
                form.setMainForm(true);
                try {
                    form.create();
                } catch ( java.lang.Exception __e ) { System.err.println( __e.toString() + " " + __e.getMessage() ); }
                return form;
            }
            // add your data members here

        }
        //---End menu_test.java----
        /*
            Form1.java

            NOTE: This file is a generated file.
                  Do not modify it by hand!
        */
        import java.awt.Font;
        import java.awt.FontMetrics;
        import java.awt.Rectangle;
        import java.awt.Insets;
        import java.lang.Math;
        import java.lang.String;

        // custom imports for Form1
        // add your custom import statements here


        class Form1 extends java.awt.Frame implements java.awt.event.WindowListener
        {
            public Rectangle DURectangle( int x, int y, int w, int h )
            {
                String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
                FontMetrics fm = getFontMetrics( getFont() );
                double fw = ( fm != null ) ? ( fm.stringWidth( alphabet ) / alphabet.length() ) : 0;
                double fh = ( fm != null ) ? ( fm.getHeight() / 2.0 ) : 0.0;

                return new Rectangle( (int) Math.round( ( (double)fw * (double)x ) / 4.0 ),
                                      (int) Math.round( ( (double)fh * (double)y ) / 4.0 ),
                                      (int) Math.round( ( (double)fw * (double)w ) / 4.0 ),
                                      (int) Math.round( ( (double)fh * (double)h ) / 4.0 ) );
            }

            public void DUPositionComponent( java.awt.Component comp, int x, int y, int w, int h, java.awt.Insets formInsets )
            {
                Rectangle rect = DURectangle( x, y, w, h );
                if( formInsets != null ) {
                     rect.x += formInsets.left;
                     rect.y += formInsets.top;
                }
                java.awt.Dimension minSize = comp.getMinimumSize();
                if( rect.width < minSize.width ) {
                    rect.width = minSize.width;
                }
                if( rect.height < minSize.height ) {
                    rect.height = minSize.height;
                }
                comp.setBounds( rect );
            }

            public void setMainForm( boolean isMainForm )
            {
                __mainForm = isMainForm;
            }
            public boolean isMainForm()
            {
                return __mainForm;
            }
            public boolean create() throws java.lang.Exception
            {
                setResizable(true);

                Font defaultFont = new Font( "Dialog", Font.PLAIN, 12 );
                setFont( defaultFont );

                boolean retval = true;
                addNotify();
                Insets formInsets = getInsets();
                setBackground( java.awt.Color.lightGray );
                setForeground( java.awt.Color.black );

                setLayout( null );
                add(cb_1);
                DUPositionComponent( this, 13, 97, 263, 218, null );
                addWindowListener(this);

                DUPositionComponent( cb_1, 50, 65, 40, 14, formInsets );
                cb_1.setFont( defaultFont );
                cb_1.setBackground( java.awt.Color.lightGray );
                cb_1.setForeground( java.awt.Color.black );
                cb_1.setEnabled(true);
                cb_1.setVisible(true);


                setMenuBar( menu_1 );
                menu_1.add(menu_1_Item0);
                menu_1_Item0.setLabel("Item0");


                setVisible(true);
                return retval;
            }

            public synchronized boolean destroy()
            {
                if( (java.awt.Container)this instanceof java.awt.Window ) {
                    ((java.awt.Window)(java.awt.Container)this).dispose();
                } else {
                    removeNotify();
                }
                if( isMainForm() ) {
                    System.gc();
                    System.runFinalization();
                    System.exit(0);
                }
                return true;
            }


            public boolean defaultHandleEvent(java.awt.Event event)
            {
                return false;
            }
            public void defaultProcessEvent(java.awt.AWTEvent event)
            {
                super.processEvent(event);
            }

            public void windowClosed( java.awt.event.WindowEvent event )
            {
            }
            public void windowOpened( java.awt.event.WindowEvent event )
            {
            }
            public void windowClosing( java.awt.event.WindowEvent event )
            {
                Object eventTarget = event.getSource();
                if( eventTarget == this ) {
                    Form1_windowClosing( event );
                } else {
                    unhandledEvent( "java.awt.event.WindowListener", "windowClosing", event );
                }
            }
            public void windowIconified( java.awt.event.WindowEvent event )
            {
            }
            public void windowActivated( java.awt.event.WindowEvent event )
            {
            }
            public void windowDeiconified( java.awt.event.WindowEvent event )
            {
            }
            public void windowDeactivated( java.awt.event.WindowEvent event )
            {
            }
            public Form1()
            {
                super();
            }
            public void processEvent(java.awt.AWTEvent event)
            {

                defaultProcessEvent(event);
            }
            public void unhandledEvent( String listenerName, String methodName, java.lang.Object event )
            {

            }
            public boolean Form1_windowClosing(java.awt.event.WindowEvent event)
            {

                setVisible(false);
                destroy();
                return false;
            }
            /****************************************
             * data members
             ****************************************/

            boolean __mainForm = false;

            private java.awt.Button cb_1 = new java.awt.Button();
            private java.awt.MenuBar menu_1 = new java.awt.MenuBar();
            private java.awt.Menu menu_1_Item0 = new java.awt.Menu("");

            // add your data members here
        }


        //---Begin Form1.java----

        //---End Form1.java----

              Assignee:
              J. Duke
              Reporter:
              Tony Wyant (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: