tom@tnosoes.UUCP (Tom Vijlbrief) (11/30/89)
The following program eats all available memory in my sparc:
=========================================
#include <stdarg.h>
#define BIT(x) (x)
enum eVObjAlign {
eVObjHLeft = BIT(0),
eVObjHCenter= BIT(1),
eVObjHRight = BIT(2),
eVObjHExpand= BIT(3),
eVObjH = eVObjHLeft|eVObjHCenter|eVObjHRight|eVObjHExpand,
eVObjVTop = BIT(8),
eVObjVBase = BIT(9),
eVObjVCenter= BIT(10),
eVObjVBottom= BIT(11),
eVObjVExpand= BIT(12),
eVObjV = eVObjVTop|eVObjVBase|eVObjVCenter|eVObjVBottom|eVObjVExpand
};
class VObjAlign {
eVObjAlign f;
public:
VObjAlign() {}
VObjAlign(int i) { f= eVObjAlign(i); }
operator int() { return f; }
};
typedef int Collection, VObject;
class Point {
public:
short a,b;
Point(int x) {a=b=x;};
};
Point gPoint0(3);
class OneOfCluster: public Point {
public:
OneOfCluster(int id= 1, VObjAlign a= 1, Point g= gPoint0, Collection *cp= 0);
OneOfCluster(int id, VObjAlign a, Point g, VObject*, ...);
OneOfCluster(int id, VObjAlign a, Point g, char*, ...);
};
OneOfCluster::OneOfCluster(int id, VObjAlign a, Point g, VObject*, ...): (id)
{
va_list ap;
va_start(ap, g);
SetItems(ap);
Init(0);
va_end(ap);
}
OneOfCluster::OneOfCluster(int id, VObjAlign a, Point g, char*, ...): (id)
{
char *t;
va_list ap;
va_start(ap, g);
Init(0);
va_end(ap);
}
===========================
tom@lightning:~/src/CC> g++ -v -c vararg.cc
gcc version 1.36.1- (based on GCC 1.36)
/usr/local/lib/gcc-cpp -+ -v -undef -D__GNUC__ -D__GNUG__ -D__cplusplus -Dsparc -Dsun -Dunix -D__sparc__ -D__sun__ -D__unix__ vararg.cc /usr/tmp/cca00190.cpp
GNU CPP version 1.36
/usr/local/lib/gcc-cc1plus /usr/tmp/cca00190.cpp -quiet -dumpbase vararg.cc -version -o /usr/tmp/cca00190.s
GNU C++ version 1.36.1- (based on GCC 1.36) (sparc) compiled by GNU C version 1.36.
default target switches: -mfpu -mepilogue
^Ctom@lightning:~/src/CC>
================================
The problem is caused by the VObjAlign class in the variable argument list,
replacing it by an int works.
Tom
===============================================================================
Tom Vijlbrief
TNO Institute for Perception
P.O. Box 23 Phone: +31 34 63 562 11
3769 ZG Soesterberg E-mail: tnosoes!tom@mcvax.cwi.nl
The Netherlands or: uunet!mcvax!tnosoes!tom
===============================================================================