Subject: Re: cryptosrc-intl goto tags are a mess
To: Sean Doran <smd@ebone.net>
From: Olaf Seibert <rhialto@polder.ubc.kun.nl>
List: current-users
Date: 02/06/2000 22:49:16
On Thu 03 Feb 2000 at 02:29:43 +0100, Sean Doran wrote:
>
> In -current's cryptosrc-intl, there are a bunch of "goto out;" ... "out:"
> statements and tags, and unfortunately many of these conflict with
> a variable called "out" in the same scope. -:(
A compiler that refuses to compile that is not a C compiler. K&R2 explicitly
mentions (in A9.1):
Because labels have their own name space, they do not interfere with
other iderntifiers and cannot be redeclared.
The ISO standard for C says the same more formally in 6.1.2.3 Name
spaces of identifiers.
> For example:
>
> /usr/src/crypto-intl/lib/libkrb5/../../dist/heimdal/lib/krb5/rd_req.c: In function `krb5_rd_req':
> /usr/src/crypto-intl/lib/libkrb5/../../dist/heimdal/lib/krb5/rd_req.c:373: `out' redeclared as different kind of symbol
> /usr/src/crypto-intl/lib/libkrb5/../../dist/heimdal/lib/krb5/rd_req.c:418: previous declaration of `out'
> *** Error code 1
>
> Substituting another string for the "out" targets, apparently confined
> to that directory (lib/krb5/../../dist/heimdal/lib/krb5/), makes things
> build happily.
I suggest your compiler be fixed. The gcc that comes with 1.4.1 does not
complain about this.
Script started on Sun Feb 6 22:45:24 2000
azenomei:~/News$ gcc -v
Using builtin specs.
gcc version egcs-2.91.60 19981201 (egcs-1.1.1 release)
azenomei:~/News$ cat c.c
void func(void)
{
int l;
l: goto l;
}
azenomei:~/News$ gcc -c c.c
azenomei:~/News$ exit
Script done on Sun Feb 6 22:45:34 2000
> Sean.
-Olaf.
--
___ Olaf 'Rhialto' Seibert - rhialto@polder.ubc. -- If one tells the truth,
\X/ .kun.nl -- one is sure, sooner or later, to be found out. (Oscar Wilde)