Article View: gnu.g++.bug
Article #958fatal signal 6: from syntax error in header file
From: Jason Rosenberg
Date: Mon, 14 Sep 1992 17:28
Date: Mon, 14 Sep 1992 17:28
985 lines
26828 bytes
26828 bytes
The following bug reports the generating of fatal signal 6. There is a
syntax error in an included header file, which seems to cause the problem.
I have included (1) the file main.cc, (2) the include file myfstream.h, (3) a
script of the -v output from the compiler in which the fatal signal is
generated and (4) the -E output of the compiler. Each of the above sections
is prefaced by the string '******' followed by the corresponding number above.
The obvious syntax error in the header file myfstream.h is that there is
a missing semi-colon after the last declaration. The error goes away if
the semi-colon is inserted. This was a frustrating bug, since I had no
idea that I had a syntax problem, but instead the compiler reported a problem
with a different include file altogether, so it took me a very long time to
figure out the bug. The compiler told me there was a problem with the
<builtin.h> header file, which was included on the line above the include
line for "myfstream.h". So I spent considerable time trying to figure out
why the standard builtin.h file was suddenly causing problems when it hadn't
been altered for several months.....
Anyway, please let me know the results of this report, if it is investigated.
It may be the same bug that I reported several weeks ago, which caused a
fatal signal 6. That case also was traceable directly to a syntax error
in a header file.....
Jason Rosenberg (jason@cs.ucla.edu)
******(1) "main.cc"
#include "myfstream.h"
main()
{}
******(2) "myfstream.h"
#ifndef _MYFSTREAM_H
#define _MYFSTREAM_H
#include <stream.h>
#include <fstream.h>
class myfstream : public fstream {
public:
myfstream();
myfstream(myfstream& m);
myfstream(ostream& o);
streambuf* ostreambuf() {return (*(ostream*)this).ostreambuf();}
operator ostream&() {return *(ostream*)this;}
void close();
};
inline myfstream::myfstream(){}
extern inline myfstream::myfstream(myfstream& m);
extern inline myfstream::myfstream(ostream& o);
extern inline void myfstream::close()
#endif
******(3) -v output
jason(1) g++ -v main.cc
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-sunos4.1.1/2.2.2/specs
gcc version 2.2.2
/usr/local/lib/gcc-lib/sparc-sun-sunos4.1.1/2.2.2/cpp -lang-c++ -v -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -Dsparc -Dsun -Dunix -D__sparc__ -D__sun__ -D__unix__ -D__sparc -D__sun -D__unix main.cc /usr/tmp/cca05505.i
GNU CPP version 2.2.2 (sparc)
/usr/local/lib/gcc-lib/sparc-sun-sunos4.1.1/2.2.2/cc1plus /usr/tmp/cca05505.i -quiet -dumpbase main.cc -version -o /usr/tmp/cca05505.s
GNU C++ version 2.2.2 (sparc) compiled by GNU C version 2.2.2.
main.cc:3: parse error before `('
cp-decl.c:10284: failed assertion `current_binding_level->parm_flag == 1'
/s/local2/Gnu/gcc-2.2.2/gcc: Internal compiler error: program cc1plus got fatal signal 6
jason(2) g++ -E main.cc > minusE
******(4) -E output
# 1 "main.cc"
# 1 "myfstream.h" 1
# 1 "/usr/local/lib/g++-include/stream.h" 1 3
# 1 "/usr/local/lib/g++-include/iostream.h" 1 3
#pragma interface
# 1 "/usr/local/lib/g++-include/streambuf.h" 1 3
#pragma interface
# 1 "/usr/local/lib/g++-include/_G_config.h" 1 3
# 23 "/usr/local/lib/g++-include/streambuf.h" 2 3
class ostream; class streambuf; class backupbuf;
extern "C" int __underflow(streambuf*);
extern "C" int __overflow(streambuf*, int);
typedef long streamoff;
typedef long streampos;
typedef unsigned long __fmtflags;
typedef unsigned char __iostate;
struct _ios_fields {
streambuf *_strbuf;
ostream* _tie;
int _width;
__fmtflags _flags;
char _fill;
__iostate _state;
unsigned short _precision;
};
enum state_value {
_good = 0 ,
_eof = 1 ,
_fail = 2 ,
_bad = 4 };
enum open_mode {
input = 1 ,
output = 2 ,
atend = 4 ,
append = 8 };
class ios : public _ios_fields {
public:
typedef __fmtflags fmtflags;
typedef __iostate iostate;
enum io_state {
goodbit = 0 ,
eofbit = 1 ,
failbit = 2 ,
badbit = 4 };
enum open_mode {
in = 1 ,
out = 2 ,
ate = 4 ,
app = 8 ,
trunc = 16 ,
nocreate = 32 ,
noreplace = 64 };
enum seek_dir { beg, cur, end};
enum { skipws=01, left=02, right=04, internal=010,
dec=020, oct=040, hex=0100,
showbase=0200, showpoint=0400, uppercase=01000, showpos=02000,
scientific=04000, fixed=0100000, unitbuf=020000, stdio=040000,
dont_close=0x80000000
};
ostream* tie() const { return _tie; }
ostream* tie(ostream* val) { ostream* save=_tie; _tie=val; return save; }
char fill() const { return _fill; }
char fill(char newf) { char oldf = _fill; _fill = newf; return oldf; }
fmtflags flags() const { return _flags; }
fmtflags flags(fmtflags new_val) {
fmtflags old_val = _flags; _flags = new_val; return old_val; }
int precision() const { return _precision; }
int precision(int newp) {
unsigned short oldp = _precision; _precision = (unsigned short)newp;
return oldp; }
fmtflags setf(fmtflags val) {
fmtflags oldbits = _flags;
_flags |= val; return oldbits; }
fmtflags setf(fmtflags val, fmtflags mask) {
fmtflags oldbits = _flags;
_flags = (_flags & ~mask) | (val & mask); return oldbits; }
fmtflags unsetf(fmtflags mask) {
fmtflags oldbits = _flags & mask;
_flags &= ~mask; return oldbits; }
int width() const { return _width; }
int width(int val) { int save = _width; _width = val; return save; }
static const unsigned long basefield;
static const unsigned long adjustfield;
static const unsigned long floatfield;
streambuf* rdbuf() const { return _strbuf; }
void clear(iostate state = 0) { _state = state; }
void set(iostate flag) { _state |= flag; }
int good() const { return _state == 0; }
int eof() const { return _state & ios::eofbit; }
int fail() const { return _state & (ios::badbit|ios::failbit); }
int bad() const { return _state & ios::badbit; }
int rdstate() const { return _state; }
operator void*() const { return fail() ? (void*)0 : (void*)(-1); }
int operator!() const { return fail(); }
void unset(state_value flag) { _state &= ~flag; }
void close();
int is_open();
int readable();
int writable();
protected:
ios(streambuf* sb = 0, ostream* tie = 0);
~ios();
};
typedef ios::seek_dir _seek_dir;
class streammarker {
friend class streambuf;
friend int __underflow(streambuf*);
struct streammarker *_next;
streambuf *_sbuf;
streampos _spos;
void set_streampos(streampos sp) { _spos = sp; }
void set_offset(int offset) { _pos = offset; _spos = (streampos)(-2); }
int _pos;
public:
streammarker(streambuf *sb);
~streammarker();
int saving() { return _spos == -2; }
int delta(streammarker&);
int delta();
};
struct __streambuf {
int _flags;
char* _gptr;
char* _egptr;
char* _eback;
char* _pbase;
char* _pptr;
char* _epptr;
char* _base;
char* _ebuf;
struct streambuf *_chain;
friend class streammarker;
char *_other_gbase;
char *_aux_limit;
char *_other_egptr;
streammarker *_markers;
unsigned short _cur_column;
char _unused;
char _shortbuf[1];
};
extern unsigned __adjust_column(unsigned start, const char *line, int count);
struct streambuf : private __streambuf {
friend class ios;
friend class istream;
friend class ostream;
friend class streammarker;
friend int __underflow(streambuf*);
protected:
static streambuf* _list_all;
streambuf*& xchain() { return _chain; }
void _un_link();
void _link_in();
char* gptr() const { return _gptr; }
char* pptr() const { return _pptr; }
char* egptr() const { return _egptr; }
char* epptr() const { return _epptr; }
char* pbase() const { return _pbase; }
char* eback() const { return _eback; }
char* ebuf() const { return _ebuf; }
char* base() const { return _base; }
void xput_char(char c) { *_pptr++ = c; }
int xflags() { return _flags; }
int xflags(int f) { int fl = _flags; _flags = f; return fl; }
void xsetflags(int f) { _flags |= f; }
void xsetflags(int f, int mask) { _flags = (_flags & ~mask) | (f & mask); }
void gbump(int n) { _gptr += n; }
void pbump(int n) { _pptr += n; }
void setb(char* b, char* eb, int a=0);
void setp(char* p, char* ep) { _pbase=_pptr=p; _epptr=ep; }
void setg(char* eb, char* g, char *eg) { _eback=eb; _gptr=g; _egptr=eg; }
char *shortbuf() { return _shortbuf; }
int in_backup() { return _flags & 0x100 ; }
char *Gbase() { return in_backup() ? _other_gbase : _eback; }
char *eGptr() { return in_backup() ? _other_egptr : _egptr; }
char *Bbase() { return in_backup() ? _eback : _other_gbase; }
char *Bptr() { return _aux_limit; }
char *eBptr() { return in_backup() ? _egptr : _other_egptr; }
char *Nbase() { return _other_gbase; }
char *eNptr() { return _other_egptr; }
int have_backup() { return _other_gbase != ((void*)0) ; }
int have_markers() { return _markers != ((void*)0) ; }
int _least_marker();
void switch_to_main_get_area();
void switch_to_backup_area();
void free_backup_area();
void unsave_markers();
int put_mode() { return _flags & 0x800 ; }
int switch_to_get_mode();
streambuf(int flags=0);
public:
static int flush_all();
static void flush_all_linebuffered();
virtual int underflow() = 0;
virtual int overflow(int c = (-1) ) = 0;
virtual int doallocate();
virtual streampos seekoff(streamoff, _seek_dir, int mode=ios::in|ios::out);
virtual streampos seekpos(streampos pos, int mode = ios::in|ios::out);
int seekmark(streammarker& mark, int delta = 0);
int sputbackc(char c);
int sungetc();
virtual ~streambuf();
int unbuffered() { return _flags & 2 ? 1 : 0; }
int linebuffered() { return _flags & 0x200 ? 1 : 0; }
void unbuffered(int i)
{ if (i) _flags |= 2 ; else _flags &= ~2 ; }
void linebuffered(int i)
{ if (i) _flags |= 0x200 ; else _flags &= ~0x200 ; }
int allocate() {
if (base() || unbuffered()) return 0;
else return doallocate(); }
void allocbuf() { if (base() == ((void*)0) ) doallocbuf(); }
void doallocbuf();
virtual int sync();
virtual int pbackfail(int c);
virtual int ungetfail();
virtual streambuf* setbuf(char* p, int len);
int in_avail() { return _egptr - _gptr; }
int out_waiting() { return _pptr - _pbase; }
virtual int sputn(const char* s, int n);
int padn(char pad, int n);
virtual int sgetn(char* s, int n);
int ignore(int);
virtual int get_column();
virtual int set_column(int);
long sgetline(char* buf, int n, char delim, int putback_delim);
int sbumpc() {
if (_gptr >= _egptr && __underflow(this) == (-1) ) return (-1) ;
else return *(unsigned char*)_gptr++; }
int sgetc() {
if (_gptr >= _egptr && __underflow(this) == (-1) ) return (-1) ;
else return *(unsigned char*)_gptr; }
int snextc() {
if (++_gptr >= _egptr && __underflow(this) == (-1) ) return (-1) ;
else return *(unsigned char*)_gptr; }
int sputc(int c) {
if (_pptr >= _epptr) return __overflow(this, (unsigned char)c);
return *_pptr++ = c, (unsigned char)c; }
void stossc() { if (_gptr < _egptr) _gptr++; }
int vscan(char const *fmt0, char * ap, ios::iostate* = ((void*)0) );
int vform(char const *fmt0, char * ap);
};
class backupbuf : public streambuf {
friend class streammarker;
protected:
backupbuf(int flags=0) : streambuf(flags|0x4000 ) { }
public:
virtual int pbackfail(int c);
virtual int underflow();
virtual int overflow(int c = (-1) );
};
struct __file_fields {
short _fileno;
int _blksize;
long _offset;
};
class filebuf : public backupbuf {
protected:
struct __file_fields _fb;
void init();
public:
filebuf();
filebuf(int fd);
filebuf(int fd, char* p, int len);
~filebuf();
filebuf* attach(int fd);
filebuf* open(const char *filename, const char *mode);
filebuf* open(const char *filename, int mode, int prot = 0664);
virtual int underflow();
virtual int overflow(int c = (-1) );
int is_open() { return _fb._fileno >= 0; }
int fd() { return is_open() ? _fb._fileno : (-1) ; }
filebuf* close();
virtual int doallocate();
virtual streampos seekoff(streamoff, _seek_dir, int mode=ios::in|ios::out);
int sputn(const char* s, int n);
int sgetn(char* s, int n);
virtual int sync();
protected:
int is_reading() { return eback() != egptr(); }
char* cur_ptr() { return is_reading() ? gptr() : pptr(); }
char* file_ptr() { return eGptr(); }
int do_write(const char *data, int to_do);
int do_flush() { return do_write(_pbase, _pptr-_pbase); }
virtual int sys_read(char* buf, int size);
virtual long sys_seek(long , _seek_dir);
virtual int sys_write(const void*, long);
virtual int sys_stat(void*);
virtual int sys_close();
};
inline int ios::readable() { return !(rdbuf()->_flags & 4 ); }
inline int ios::writable() { return !(rdbuf()->_flags & 8 ); }
inline int ios::is_open() { return (rdbuf()->_flags & 4 +8 )
!= 4 +8 ; }
inline ios::ios(streambuf* sb , ostream* tie ) {
_tie = tie; _strbuf=sb; _state=0; _width=0; _fill=' ';
_flags=ios::skipws; _precision=6; }
inline ios::~ios() {
if (!(_flags & (unsigned int)ios::dont_close)) delete _strbuf; }
# 25 "/usr/local/lib/g++-include/iostream.h" 2 3
class istream; class ostream;
typedef ios& (*__manip)(ios&);
typedef istream& (*__imanip)(istream&);
typedef ostream& (*__omanip)(ostream&);
extern istream& ws(istream& ins);
extern ostream& flush(ostream& outs);
extern ostream& endl(ostream& outs);
extern ostream& ends(ostream& outs);
class ostream : public ios
{
void do_osfx();
public:
ostream() { }
ostream(streambuf* sb, ostream* tied=((void*)0) );
int opfx() { if (!good()) return 0; if (_tie) _tie->flush(); return 1; }
void osfx() { if (flags() & (ios::unitbuf|ios::stdio))
do_osfx(); }
streambuf* ostreambuf() const { return _strbuf; }
ostream& flush();
ostream& put(char c) { _strbuf->sputc(c); return *this; }
ostream& write(const char *s, int n);
ostream& write(const unsigned char *s, int n) { return write((const char*)s, n);}
ostream& write(const signed char *s, int n) { return write((const char*)s, n);}
ostream& write(const void *s, int n) { return write((const char*)s, n);}
ostream& seekp(streampos);
ostream& seekp(streamoff, _seek_dir);
streampos tellp();
ostream& form(const char *format ...);
ostream& vform(const char *format, char * args);
};
extern ostream& operator<<(ostream&, char c);
inline ostream& operator<<(ostream& os, unsigned char c)
{ return os << (char)c; }
extern ostream& operator<<(ostream &os, signed char c) { return os << (char)c;}
extern ostream& operator<<(ostream&, const char *s);
inline ostream& operator<<(ostream& os, const unsigned char *s)
{ return os << (const char*)s; }
inline ostream& operator<<(ostream& os, const signed char *s)
{ return os << (const char*)s; }
extern ostream& operator<<(ostream&, void *p);
extern ostream& operator<<(ostream&, int n);
extern ostream& operator<<(ostream&, long n);
extern ostream& operator<<(ostream&, unsigned int n);
extern ostream& operator<<(ostream&, unsigned long n);
inline ostream& operator<<(ostream& os, short n) {return os << (int)n;}
inline ostream& operator<<(ostream& os, unsigned short n)
{return os << (unsigned int)n;}
extern ostream& operator<<(ostream&, float n);
extern ostream& operator<<(ostream&, double n);
inline ostream& operator<<(ostream& os, __omanip func) { return (*func)(os); }
inline ostream& operator<<(ostream& os, __manip func) {(*func)(os); return os;}
extern ostream& operator<<(ostream&, streambuf*);
class istream : public ios
{
int _gcount;
int _skip_ws();
public:
istream() { _gcount = 0; }
istream(streambuf* sb, ostream*tied=((void*)0) );
streambuf* istreambuf() const { return _strbuf; }
istream& get(char& c);
istream& get(unsigned char& c) { return get((char&)c); }
istream& get(signed char& c) { return get((char&)c); }
istream& read(char *ptr, int n);
istream& read(unsigned char *ptr, int n) { return read((char*)ptr, n); }
istream& read(signed char *ptr, int n) { return read((char*)ptr, n); }
istream& read(void *ptr, int n) { return read((char*)ptr, n); }
istream& getline(char* ptr, int len, char delim = '\n');
istream& get(char* ptr, int len, char delim = '\n');
istream& get(streambuf& sb, char delim = '\n');
istream& gets(char **s, char delim = '\n');
int ipfx(int need) {
if (!good()) { set(ios::failbit); return 0; }
if (_tie && (need == 0 || rdbuf()->in_avail() < need)) _tie->flush();
if (!need && (flags() & ios::skipws)) return _skip_ws();
return 1;
}
int ipfx0() {
if (!good()) { set(ios::failbit); return 0; }
if (_tie) _tie->flush();
if (flags() & ios::skipws) return _skip_ws();
return 1;
}
int ipfx1() {
if (!good()) { set(ios::failbit); return 0; }
if (_tie && rdbuf()->in_avail() == 0) _tie->flush();
return 1;
}
int get() { if (!ipfx1()) return (-1) ;
int ch = _strbuf->sbumpc();
if (ch == (-1) ) set(ios::eofbit);
return ch; }
int peek() { if (!ipfx1()) return (-1) ;
int ch = _strbuf->sgetc();
if (ch == (-1) ) set(ios::eofbit);
return ch; }
int gcount() { return _gcount; }
istream& ignore(int n=1, int delim = (-1) );
istream& seekg(streampos);
istream& seekg(streamoff, _seek_dir);
streampos tellg();
istream& putback(char ch) {
if (good() && _strbuf->sputbackc(ch) == (-1) ) clear(ios::badbit);
return *this;}
istream& unget() {
if (good() && _strbuf->sungetc() == (-1) ) clear(ios::badbit);
return *this;}
istream& scan(const char *format ...);
istream& vscan(const char *format, char * args);
istream& unget(char ch) { return putback(ch); }
int skip(int i);
};
extern istream& operator>>(istream&, char*);
inline istream& operator>>(istream& is, unsigned char* p)
{ return is >> (char*)p; }
inline istream& operator>>(istream& is, signed char*p) {return is >> (char*)p;}
extern istream& operator>>(istream&, char& c);
extern istream& operator>>(istream& s, unsigned char& c) {return s>>(char&)c;}
extern istream& operator>>(istream& s, signed char& c) {return s >> (char&)c;}
extern istream& operator>>(istream&, int&);
extern istream& operator>>(istream&, long&);
extern istream& operator>>(istream&, short&);
extern istream& operator>>(istream&, unsigned int&);
extern istream& operator>>(istream&, unsigned long&);
extern istream& operator>>(istream&, unsigned short&);
extern istream& operator>>(istream&, float&);
extern istream& operator>>(istream&, double&);
inline istream& operator>>(istream& is, __manip func) {(*func)(is); return is;}
inline istream& operator>>(istream& is, __imanip func) { return (*func)(is); }
extern istream& operator>>(istream&, streambuf*);
class iostream : public ios {
int _gcount;
public:
iostream() { _gcount = 0; }
iostream(streambuf* sb, ostream*tied=((void*)0) );
operator istream&() { return *(istream*)this; }
operator ostream&() { return *(ostream*)this; }
istream& get(char& c) { return ((istream*)this)->get(c); }
istream& get(unsigned char& c) { return ((istream*)this)->get((char&)c); }
istream& get(signed char& c) { return ((istream*)this)->get((char&)c); }
istream& read(char *ptr, int n) { return ((istream*)this)->read(ptr, n); }
istream& read(unsigned char *ptr, int n)
{ return ((istream*)this)->read((char*)ptr, n); }
istream& read(signed char *ptr, int n)
{ return ((istream*)this)->read((char*)ptr, n); }
istream& read(void *ptr, int n)
{ return ((istream*)this)->read((char*)ptr, n); }
istream& getline(char* ptr, int len, char delim = '\n')
{ return ((istream*)this)->getline(ptr, len, delim); }
istream& get(char* ptr, int len, char delim = '\n')
{ return ((istream*)this)->get(ptr, len, delim); }
istream& gets(char **s, char delim = '\n')
{ return ((istream*)this)->gets(s, delim); }
istream& ignore(int n=1, int delim = (-1) )
{ return ((istream*)this)->ignore(n, delim); }
int ipfx(int need) { return ((istream*)this)->ipfx(need); }
int ipfx0() { return ((istream*)this)->ipfx0(); }
int ipfx1() { return ((istream*)this)->ipfx1(); }
int get() { return _strbuf->sbumpc(); }
int peek() { return ipfx1() ? _strbuf->sgetc() : (-1) ; }
int gcount() { return _gcount; }
istream& putback(char ch) { return ((istream*)this)->putback(ch); }
istream& unget() { return ((istream*)this)->unget(); }
istream& seekg(streampos pos) { return ((istream*)this)->seekg(pos); }
istream& seekg(streamoff off, _seek_dir dir)
{ return ((istream*)this)->seekg(off, dir); }
streampos tellg() { return ((istream*)this)->tellg(); }
istream& scan(const char *format ...);
istream& vscan(const char *format, char * args)
{ return ((istream*)this)->vscan(format, args); }
istream& unget(char ch) { return putback(ch); }
int opfx() { return ((ostream*)this)->opfx(); }
void osfx() { ((ostream*)this)->osfx(); }
ostream& flush() { return ((ostream*)this)->flush(); }
ostream& put(char c) { return ((ostream*)this)->put(c); }
ostream& write(const char *s, int n)
{ return ((ostream*)this)->write(s, n); }
ostream& write(const unsigned char *s, int n)
{ return ((ostream*)this)->write((const char*)s, n); }
ostream& write(const signed char *s, int n)
{ return ((ostream*)this)->write((const char*)s, n); }
ostream& write(const void *s, int n)
{ return ((ostream*)this)->write((const char*)s, n); }
ostream& form(const char *format ...);
ostream& vform(const char *format, char * args)
{ return ((ostream*)this)->vform(format, args); }
ostream& seekp(streampos pos) { return ((ostream*)this)->seekp(pos); }
ostream& seekp(streamoff off, _seek_dir dir)
{ return ((ostream*)this)->seekp(off, dir); }
streampos tellp() { return ((ostream*)this)->tellp(); }
};
extern istream cin;
extern ostream cout, cerr, clog;
struct Iostream_init { } ;
inline ios& dec(ios& i)
{ i.setf(ios::dec, ios::dec|ios::hex|ios::oct); return i; }
inline ios& hex(ios& i)
{ i.setf(ios::hex, ios::dec|ios::hex|ios::oct); return i; }
inline ios& oct(ios& i)
{ i.setf(ios::oct, ios::dec|ios::hex|ios::oct); return i; }
# 7 "/usr/local/lib/g++-include/stream.h" 2 3
extern char* form(const char*, ...);
extern char* dec(long, int=0);
extern char* dec(int, int=0);
extern char* dec(unsigned long, int=0);
extern char* dec(unsigned int, int=0);
extern char* hex(long, int=0);
extern char* hex(int, int=0);
extern char* hex(unsigned long, int=0);
extern char* hex(unsigned int, int=0);
extern char* oct(long, int=0);
extern char* oct(int, int=0);
extern char* oct(unsigned long, int=0);
extern char* oct(unsigned int, int=0);
inline istream& WS(istream& str) { return ws(str); }
# 4 "myfstream.h" 2
# 1 "/usr/local/lib/g++-include/fstream.h" 1 3
#pragma interface
# 1 "/usr/local/lib/g++-include/iostream.h" 1 3
# 267 "/usr/local/lib/g++-include/iostream.h" 3
# 23 "/usr/local/lib/g++-include/fstream.h" 2 3
class ifstream : public istream {
public:
ifstream();
ifstream(int fd);
ifstream(const char *name, int mode=ios::in, int prot=0664);
void open(const char *name, int mode=ios::in, int prot=0664);
void close();
filebuf* rdbuf() const { return (filebuf*)_strbuf; }
int filedesc() { return rdbuf()->fd(); }
ifstream& raw() { rdbuf()->setbuf(((void*)0) , 0); return *this; }
};
class ofstream : public ostream {
public:
ofstream();
ofstream(int fd);
ofstream(const char *name, int mode=ios::out, int prot=0664);
void open(const char *name, int mode=ios::out, int prot=0664);
void close();
filebuf* rdbuf() const { return (filebuf*)_strbuf; }
int filedesc() { return rdbuf()->fd(); }
ofstream& raw() { rdbuf()->setbuf(((void*)0) , 0); return *this; }
};
class fstream : public iostream {
public:
fstream();
fstream(int fd);
fstream(const char *name, int mode, int prot=0664);
void open(const char *name, int mode, int prot=0664);
void close();
filebuf* rdbuf() const { return (filebuf*)_strbuf; }
int filedesc() { return rdbuf()->fd(); }
fstream& raw() { rdbuf()->setbuf(((void*)0) , 0); return *this; }
};
# 5 "myfstream.h" 2
class myfstream : public fstream {
public:
myfstream();
myfstream(myfstream& m);
myfstream(ostream& o);
streambuf* ostreambuf() {return (*(ostream*)this).ostreambuf();}
operator ostream&() {return *(ostream*)this;}
void close();
};
inline myfstream::myfstream(){}
extern inline myfstream::myfstream(myfstream& m);
extern inline myfstream::myfstream(ostream& o);
extern inline void myfstream::close()
# 1 "main.cc" 2
main()
{}
Technical Details
Message-ID:
<920914.172857z.05981.jason@lanai.cs.ucla.edu>Path:
arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!cs.ucla.edu!jasonShow Full Headers
Complete Article Headers
Newsgroups: gnu.g++.bug Path: arc1-ca.pugleaf.net!sparky!uunet!cis.ohio-state.edu!cs.ucla.edu!jason From: jason@cs.ucla.edu (Jason Rosenberg) Subject: fatal signal 6: from syntax error in header file Message-ID: <920914.172857z.05981.jason@lanai.cs.ucla.edu> Sender: gnulists@ai.mit.edu Organization: GNUs Not Usenet Distribution: gnu Date: Mon, 14 Sep 1992 17:28:57 GMT Approved: bug-g++@prep.ai.mit.edu Lines: 986