On May 25, 2013, at 4:46 AM, Peter Bex <peter....@xs4all.nl> wrote:

> There are also some memsets still left in the code after your patch,
> so some get initialized using C_tm_init, and some using memset.

Only strptime gets initialized with C_tm_init, and the rest with memset.  
strptime produces a time vector (C_tm_get), while the others deconstruct one 
(C_tm_set).  So these initializations are for two different purposes, i.e.:

The memset zeroes out the struct before we copy *all* fields in from a Scheme 
vector (in case there are hidden fields).  The C_tm_init zeroes out the struct 
and sets a few sane default values.  It is only strptime that needs this extra 
initialization, as it's the only call for which we may have only partial 
information.  This is basically equivalent to creating a Scheme vector with 
sane default values and copying it in using C_tm_set(), like the others do, 
just implemented in C without needing a fresh default time vector.

Just want to make sure you are aware of this.  I assumed the existing code uses 
a static buffer for efficiency to minimize garbage.

Jim
_______________________________________________
Chicken-hackers mailing list
Chicken-hackers@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-hackers

Reply via email to