Subject: Re: bin/36444: flex generates bad C++ code
To: None <gnats-admin@netbsd.org, netbsd-bugs@netbsd.org,>
From: Christos Zoulas <christos@zoulas.com>
List: netbsd-bugs
Date: 06/05/2007 15:35:03
The following reply was made to PR bin/36444; it has been noted by GNATS.
From: christos@zoulas.com (Christos Zoulas)
To: Michael van Elst <mlelstv@serpens.de>, gnats-bugs@NetBSD.org
Cc: gnats-admin@NetBSD.org, netbsd-bugs@NetBSD.org
Subject: Re: bin/36444: flex generates bad C++ code
Date: Tue, 5 Jun 2007 11:32:57 -0400
On Jun 5, 5:17pm, mlelstv@serpens.de (Michael van Elst) wrote:
-- Subject: Re: bin/36444: flex generates bad C++ code
| On Tue, Jun 05, 2007 at 03:00:14PM +0000, Christos Zoulas wrote:
| > The problem should be fixed by changing:
| > unsigned long size;
|
| This can't be changed, but you can cast the value to yy_size_t
| when passing it to yy_scan_bytes.
|
| > We could add a few more yy_scan_bytes() functions so that we have explicit
| > matches for unsigned long and long, but it is not worth the trouble. Passing
| > a long where an int is expected is not a good practice anyway.
|
| What problem is this function overloading trying to solve?
I forget the exact problem, but it had something to do with buffers being
yy_size_t internally where some of the flex API's used int to pass values
to them. This caused problems to another application. I did not want to
cause an ABI change by s/int/yy_size_t/, so I added the overloading in c++.
This has not caused a problem until now (when someone passed an unsigned
long to a function and the overloading could not resolve it).
christos