Re: [ROOT] Re:

From: Valeri Fine (fine@bnl.gov)
Date: Tue Nov 20 2001 - 17:43:15 MET


Hi, Brandos I ewould appreciate you probide Sbj line with your messages.
I used to delete right away  any message with no "Subj"

Coming back to Rene's answer:

> The functions like Strdup were implemented in the early days of Root
> under Windows to circumvent deficiencies in the Windows implementation
> of the standard Posix functions (well strdup is not posix), strchr, strcpy, etc.
> We found that the Windows implementation crashes if you pass a null pointer
> eg to strchr.
> The ROOT code is now protected everywhere against calls to these functions
> with null pointers.
> Functions like Strdup could be removed from existing code and we do not use it
> in the new code.
> 
> However, I do not understand how you can get a duplication with Strdup.
> This function is not defined in the MS libs.

   It is not correct. MS has introduced this function recently, 
  Very likely they had had the same reason ROOT team had:

  1. There is no  standard for strdup

  2. the behaviour of str<bla> functions provided with zero pointer is not defined
      and causes the program crash (not under Windows only. It is still true for other 
      (UNIX) platforms also.

However I have to mention MS defines his StrDup function with
"#include <shlwapi.h>" 
If one could avoid this include one may have avoided the name clash.

 (See attachment)

                                      Best regards, Valeri 
> 
> Rene Brun
> 
> Brandon Kohn wrote:
> > 
> >    Part 1.1       Type: Plain Text (text/plain)
> >               Encoding: quoted-printable
> Hello all,
> 
> I've been mucking around with Root and win32 stuff for a while now, and I've
> found some curiosities that I would like answered.  For one, it seems that root
> redefines some functions that exist in standard libraries (ansi, unix, and
> win32).  For instance, the function StrDup in TString.  I get name conflicts
> when I try to compile root objects (TH1 for instance) with some codes that
> already include the function from the standard lib. A cursory inspection of the
> code StrDup shows that it simply new's a char array, strcpy's the string and
> returns the ptr to the new array.  Is this different then what the standard lib
> does?
> 
> If not, can it be removed from Root?
> 
> Brandon Kohn
> +377 97 97 41 50 ext. 306 (Work)
> +377 97 77 86 71 (Home)
> Monaco
> 





This archive was generated by hypermail 2b29 : Tue Jan 01 2002 - 17:51:09 MET