AWARE SYSTEMS
TIFF and LibTiff Mail List Archive

Thread

2008.05.23 18:55 "[Tiff] Unitialized Variable Caused a Problem in TIFFCP", by Gene Amtower
[...]
2008.05.26 16:07 "Re: [Tiff] beta2 release - lfind() problem on Win64", by Andrey Kiselev
2008.05.26 16:34 "Re: [Tiff] beta2 release - lfind() problem on Win64", by Bob Friesenhahn
2008.05.26 18:02 "Re: [Tiff] beta2 release - lfind() problem on Win64", by Edward Lam
[...]

2008.05.26 18:02 "Re: [Tiff] beta2 release - lfind() problem on Win64", by Edward Lam

Hi Andrey,

Speaking of the port/ code, we use this on our project for strcasecmp():

#ifdef WIN32

     #define strcasecmp(ST1,ST2) stricmp((ST1),(ST2))
     #define strncasecmp(ST1,ST2,N) strnicmp((ST1),(ST2),(N))

#endif

Cheers,

-Edward

On Mon, May 26, 2008 at 10:31:36AM -0500, Bob Friesenhahn wrote:

The recent libtiff updates in this area were necessary so that libtiff works properly in 64-bit applications. This is supposed to be the prototype for lfind:

      void *lfind(const void *key, const void *base, size_t *nelp,

      size_t width, int (*compar)(const void *, const void *));

It seems that the only cure is to add Windows specific code to handle this specific case.

We have such a code (see port/ directory) and it was used on Windows platform until I discovered that lfind is hidden under _lfind name there. So we can just continue using our implementation.

Other option is to use _lfind_s() function which is advertised as a "safe" replacement to the old one, but then we will need to modify comparison functions declarations too, because _lfind_s passes extra parameter down there. The first way is simpler, of course.

Best regards,
Andrey

PS.

OFF: do they seriously thinking that their "safe" functions really help people?