Inventor/Volumizer bus errors: work-around

New Message Reply Date view Thread view Subject view Author view

Dave Akers (dla@sgi.com)
Wed, 06 Oct 1999 11:21:52 -0700


Hey everyone,

   Several of you have reported bus errors trying to run the Inventor
demos for Volumizer when using the 7.3 compiler. This problem has been
traced to an obscure code-generation bug in CC 7.3. There is no fix for
the compiler yet, but there is a temporary workaround that will fix the
demos.

 You'll need to replace the file
"/usr/share/Volumizer/src/apps/Inventor/voivAppearanceElement.h" with
the file attached to this message. When a more permanent fix is
available, we will let you know.. If anyone still has problems after
replacing this header file, please send us mail!

-Dave

#ifndef _voivAppearanceElement_h_
#define _voivAppearanceElement_h_

#include <vo/Appearance.h>
#include <Inventor/elements/SoReplacedElement.h>

#include "voivAppearance.h"

//////////////////////////////////////////////////////////////////////////////
//
// Class: voivAppearanceElement
//
// Element that stores the current volume appearance (i.e., texture) info.
//
// Modified on 10/6/99 by dla to include a work-around for a CC 7.3
// code generation bug.
//
//////////////////////////////////////////////////////////////////////////////

SoEXTENDER class voivAppearanceElement : public SoReplacedElement {

  // Note: replaced the SO_ELEMENT_HEADER macro to get around CC bug.

  // *** Begin replaced portion of header ***

  public:
    static SoType getClassTypeId() {
        // This is the function that was crashing under 7.3. We replace it
        // with something that puts the static SoType on the stack before
        // returning it.
        SoType temp = classTypeId;
        return temp;
    }
    static int getClassStackIndex() { return classStackIndex; }
  protected:
    static int classStackIndex;
    voivAppearanceElement();
  private:
    static SoType classTypeId;

    static void *createInstance();

  // *** End replaced portion of header ***

  public:
    virtual void init(SoState *state);

    // Set
    static void set(SoState *state, SoNode *node, voivAppearance *cdp);

    // Get
    static voivAppearance *get(SoState *state);

    // Returns the top (current) instance of the element in the state
    static const voivAppearanceElement * getInstance(SoState *state);

    virtual SbBool matches(const SoElement *elt) const;

    virtual SoElement *copyMatchInfo() const;

    virtual void print(FILE *fp) const;

  SoINTERNAL public:
    // Initializes the voivAppearanceElement class
    static void initClass();

  protected:
    voivAppearance *data;
    virtual ~voivAppearanceElement() {}
};

#endif // _voivAppearanceElement_h_


New Message Reply Date view Thread view Subject view Author view

This archive was generated by hypermail 2.0b2 on Wed Oct 06 1999 - 13:05:35 PDT