On Mon, Apr 24, 2006 at 10:15:56PM +0200, Roland Stigge wrote: > dann frazier wrote: > > My patch removes the --std=c89 CFLAG. > > * --std=c89 is the same as -ansi (according to gcc manpage) > > * -ansi causes __STRICT_ANSI__ to be defined > > * in features.h, __STRICT_ANSI__ prevents __USE_POSIX from being defined > > * features.h is included by stdio.h > > * stdio.h defines popen and fdopen only if __USE_POSIX is defined > > > > So, this isn't just a warning suppression. > > And how is popen and fdopen related to implicit pointer conversions?
dia is using these functions without having the prototypes defined (as I explained above). Therefore, the compiler doesn't know what the return value should be, so it is implicitly converting it to an integer. This happens to be harmless on archs where ints and pointers are the same size. But on archs where pointers are greater than integers, the pointer will be truncated. What this means is that anywhere you use the return value from popen or fdopen you will currently segfault on certain architectures, including ia64 and amd64. -- dann frazier -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]