Date: Tue, 6 Jun 2000 16:50:24 -0700 (PDT) From: pfeifer@dbai.tuwien.ac.at To: freebsd-gnats-submit@FreeBSD.org Subject: misc/19077: #define trace _nc_trace in /usr/include/ncurses.h causes collateral damage. Message-ID: <20000606235024.DA31337BB9F@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 19077
>Category: misc
>Synopsis: #define trace _nc_trace in /usr/include/ncurses.h causes collateral damage.
>Confidential: no
>Severity: critical
>Priority: high
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Tue Jun 06 17:00:00 PDT 2000
>Closed-Date:
>Last-Modified:
>Originator: Gerald Pfeifer
>Release: n/a
>Organization:
Vienna University of Technology
>Environment:
n/a
(Problem destilled from bug reports of 4.0-STABLE users and inspection)
>Description:
The following change to /usr/include/ncurses.h which adds a
#define trace _nc_trace
causes problems with our Wine port and probably further software:
1.1.1.3 (vendor branch) Wed May 24 10:44:45 2000 UTC by peter
CVS Tags: v5_0_19991023, HEAD; Branch: NCURSES
Bring in the fix for the trace/_nc_trace issue, without breaking the
vendor branching. The author has fixed this also so we can do this
safely.
1.1.1.2.2.1 Tue May 23 13:42:17 2000 UTC by ache
Branch: RELENG_4
MFC: trace -> _nc_trace
For example, consider the following snippet:
void _nc_trace() { }
#define trace _nc_trace
main() {
long trace=0;
if( &trace != &_nc_trace )
printf("Okay\n");
}
As another example, consider Wine, where this change causes:
../libwine.so: undefined reference to `__GET_DEBUGGING__nc_trace'
due to a new interaction with the TRACE macro in debugtools.h.
http://cvs.winehq.com/cvsweb/wine/include/debugtools.h?rev=1.9 has
the source of that Wine include file.
The new #define in ncurses.h clearly breaks ANSI/ISO C compliant code.
>How-To-Repeat:
Try the code snippet from "Full Description".
Compile the Wine port.
>Fix:
a. Remove that #define.
b. Adding a stub instead of that #define.
Andrey A. Chernov <ache@freebsd.org> who introduced the breakage cannot
install a fix by himself, but suggested the following:
--- include/curses.h.in.bak Wed May 24 14:44:45 2000
+++ include/curses.h.in Mon Jun 5 02:28:33 2000
@@ -1313,8 +1313,7 @@
extern char *_tracechtype(chtype);
extern char *_tracechtype2(int, chtype);
extern char *_tracemouse(const MEVENT *);
-#define trace _nc_trace
-extern void trace(const unsigned int);
+extern void _nc_trace(const unsigned int);
/* trace masks */
#define TRACE_DISABLE 0x0000 /* turn off tracing */
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000606235024.DA31337BB9F>
