Bug 89142 - SRPMS: extra definition of vsnprintf in config.h conflicts with system one causeing compile-time error with more strict than gcc compiler
SRPMS: extra definition of vsnprintf in config.h conflicts with system one ca...
Status: CLOSED RAWHIDE
Product: Red Hat Linux
Classification: Retired
Component: koffice (Show other bugs)
8.0
i386 Linux
medium Severity medium
: ---
: ---
Assigned To: Ngo Than
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2003-04-18 05:43 EDT by Sysoltsev Slawa
Modified: 2007-04-18 12:53 EDT (History)
0 users

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2003-06-26 08:33:26 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
Patch for configure.in.in that add check for vsnprintf presence in system (218 bytes, patch)
2003-04-18 05:44 EDT, Sysoltsev Slawa
no flags Details | Diff

  None (edit)
Description Sysoltsev Slawa 2003-04-18 05:43:32 EDT
Description of problem:
Trying to build koffice from RH8.0 with Intel compiler I got such an error:

/bin/sh ../../libtool --silent --mode=compile --tag=CXX g++ -DHAVE_CONFIG_H -I. -
I. -I../.. -I../../lib/store -I../../lib/store -I../../lib/kwmf -I../../lib/kwmf -I/usr/include/kde -
I/usr/lib/qt3-gcc3.2/include -I/usr/X11R6/include   -DQT_THREAD_SUPPORT  -
D_REENTRANT  -Wnon-virtual-dtor -Wno-long-long -Wbad-function-cast -Wundef -
Wall -pedantic -W -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -
D_XOPEN_SOURCE=500 -D_BSD_SOURCE -Wcast-align -Wconversion -O2 -
D_GNU_SOURCE -O2 -march=i386 -mcpu=i686 -DNO_DEBUG -DNDEBUG -fno-
check-new -fno-exceptions -fno-check-new -DQT_CLEAN_NAMESPACE -
DQT_NO_ASCII_CAST -DQT_NO_COMPAT -DKDE_NO_COMPAT   -c -o 
koApplication.lo `test -f koApplication.cc || echo './'`koApplication.cc
/usr/include/stdio.h(321): error: exception specification is incompatible with that of 
previous function "snprintf" (declared at line 181 of "../../config.h")
       __THROW __attribute__ ((__format__ (__printf__, 3, 4)));
       ^

/usr/include/stdio.h(325): error: exception specification is incompatible with that of 
previous function "vsnprintf" (declared at line 177 of "../../config.h")
       __THROW __attribute__ ((__format__ (__printf__, 3, 0)));
       ^

As you see problem here in conflicting two definitions of vsnprintf; one is in system 
header stdio.h, second is in config.h, generated in configuration stage. Looking 
into config.h I found that vsnprintf prototype is guarded by #if:
#if !defined(HAVE_VSNPRINTF) || defined(hpux) || defined(__osf__)

It's quite competently that it is guarded by HAVE_VSNPRINTF, but there is no 
something about HAVE_VSNPRINTF in config.h previously! It seems you simply 
forgot to test for presence of vsnprintf in configuration, that's why extra vsnprintf 
declaration mistakenly ALWAYS included. I did the patch for configure.in.in that 
add test for vsnprintf, with it declaration of vsnprintf becomes active only when 
there is no such in system headers.

GNU gcc doesn't expose this bug because it treats such functions as vsnprintf, 
snprintf (but not fprintf, sprintf, etc) somehow specially and they can be redeclared 
in difference with others.


Version-Release number of selected component (if applicable):
koffice-1.2-0.rc1.4

How reproducible:
always

Steps to Reproduce:
1. I'm afraid this is not reproducible with gcc because of special treating for 
vsnprintf, snprintf; you could try to reproduce problem using Intel compiler or other 
third-party compiler, for this just try to build koffice from sources on system that 
have vsnprintf.
    
Actual results:
Compilation error

Expected results:
Succesfully built package

Additional info:
Comment 1 Sysoltsev Slawa 2003-04-18 05:44:49 EDT
Created attachment 91186 [details]
Patch for configure.in.in that add check for vsnprintf presence in system
Comment 2 Ngo Than 2003-06-26 08:33:26 EDT
it's fixed in 1.2.1-12. thanks for your patch file

Note You need to log in before you can comment on or make changes to this bug.