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 ===============================================================================