Path: utzoo!mnetor!uunet!mcvax!targon!wim
From: wim@targon.UUCP (Wim C. J. van Eerdt)
Newsgroups: comp.lang.c++
Subject: Bug bug? solved (?)
Message-ID: <367@targon.UUCP>
Date: 8 Dec 87 09:22:14 GMT
Reply-To: wim@targon.UUCP (Wim C. J. van Eerdt)
Organization: Nixdorf Computer BV., OSP, P.O. Box 29,Vianen, The Netherlands
Lines: 34
Keywords: inline local variables

As long as the department does not have an uucp-feed,
you can e-mail me, the poster.
Success!

	Wim van Eerdt                   E-mail: mcvax!targon!wim
	OSP, Nixdorf Computer Bv, Postbus 29, 4130 EA Vianen
	Nederland. Tel.: +31 3473 62211.

----------------News article got:-------------------------------------
Author: Gerard van Dorth
Subject:  Bug bug? solved (?)
Keywords: inline local variables

> ... Redeclaration of "_au2__Xt_val_global"

The conditional statement on the lines 161/162 "if ( base == BLOCK  &&
	n->lex_level < ( (Pfct(expand_fn->tp)->memof) ? 3 : 2 ) )"
in file expand.c has to be changed in:
"if (  base == BLOCK && n->lex_level < 'function-defined-in-class' ? 3 : 2  )".

For a function defined in a class the lex_level is raised by the curly brace
of the class itself. Not only member functions (memof = member of) can be
defined inline, friends can also.
(Note that funny declarations of local variables did appear in case a member
function which needs locals is declared inline but not defined in the class
itself).

The most simple way to tell whether a function is defined in a class is the
use of a global variable (the more globals the more fun), set and reset 
(embracing the first loop) in the routine classdef::simpl() in file simpl.c
-- 
	Wim van Eerdt                   E-mail: mcvax!targon!wim
	OSP, Nixdorf Computer Bv, Postbus 29, 4130 EA Vianen
	Nederland. Tel.: +31 3473 62211.