Applications From Scratch: http://appsfromscratch.berlios.de/


--- On Sun, 6/22/08, Sergei Steshenko <[EMAIL PROTECTED]> wrote:

> From: Sergei Steshenko <[EMAIL PROTECTED]>
> Subject: RE: [openssl.org #1700]: Bug report - openssl-0.9.8h breaks building 
> applications which depend on it
> To: [EMAIL PROTECTED]
> Cc: [email protected]
> Date: Sunday, June 22, 2008, 2:47 PM
> Applications From Scratch:
> http://appsfromscratch.berlios.de/
> 
> 
> --- On Sun, 6/22/08, Jeroen Daanen via RT
> <[EMAIL PROTECTED]> wrote:
> 
> > From: Jeroen Daanen via RT <[EMAIL PROTECTED]>
> > Subject: RE: [openssl.org #1700]: Bug report -
> openssl-0.9.8h breaks building applications which depend on
> it
> > To: [EMAIL PROTECTED]
> > Cc: [email protected]
> > Date: Sunday, June 22, 2008, 12:55 PM
> > This is caused by a name clash. In the VC8 file
> WinCrypt.h
> > the following
> > is defined:
> > PlatformSDK/Include/WinCrypt.h:#define X509_EXTENSIONS
> > ((LPCSTR) 5)
> > 
> > This causes line 207 of openssl/x509.h to be
> pre-compiled
> > to
> > 
> > typedef STACK ((LPCSTR) 5);
> > 
> > X509_EXTENSIONS should be renamed to prevent this
> clash.
> > 
> > Regards,
> > Jeroen
> 
> The point of my report is somewhat different, and maybe I
> misunderstand
> the 'typedef' festure of "C"; anyway,
> I've just refreshed my memory
> reading
> 
> http://en.wikipedia.org/wiki/Typedef
> .
> 
> The point is that 'typedef' is legally used as
> 
> typedef OLD_TYPE NEW_TYPE
> 
> , where OLD_TYPE is just and identifier, without any
> '(', ')'; NEW_TYPE
> can be pretty complex though.
> 
> For example, I can write something like this:
> 
> #define MY_FUNKY_TYPE(type1, size1, type2, size2) \
> struct \
>   { \
>   type1 foo[size1]; \
>   type2 bar[size2]; \
>   }
> 
> typedef my_funky_type MY_FUNKY_TYPE(double, 10, unsigned,
> 20);
> 
> ,
> 
> but I do not think I can write
> 
> typedef my_type(<whatever>) NEW_TYPE;
> 
> - the "(<whatever>)" part looks illegal to
> me, and this is how I
> understood 'gcc' error messages.
> 
> That's why I suggested to replace
> 
> typedef OLD_TYPE(<whatever1>)
> NEW_TYPE(<whatever2>);
> 
> with
> 
> #define OLD_TYPE(<whatever1>)
> NEW_TYPE(<whatever2>)
> 
> - the latter is a macro in which OLD_TYPE _can_ have
> arguments.
> 
> Thanks,
>   Sergei.

Well, if  in

    207 typedef STACK_OF(X509_EXTENSION) X509_EXTENSIONS;

"STACK_OF(X509_EXTENSION)" is a macro, then from "C" point of view
the line may be OK - depends on how "STACK_OF(X509_EXTENSION)" is
expanded.

Regards,
  Sergei.







      


______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       [email protected]
Automated List Manager                           [EMAIL PROTECTED]

Reply via email to