{"push_id":2429974515,"size":1,"distinct_size":1,"ref":"refs/heads/time-suite","head":"499ee269e51526fcfecfed56df13e78b925fd1a7","before":"b1314eadaf2323a1550b84409af15c77f60e0aef","commits":[{"sha":"499ee269e51526fcfecfed56df13e78b925fd1a7","author":{"name":"Ethan Atkins","email":"f05d1af623e496cd5940baaabe31961d724cda20@gmail.com"},"message":"Improve portability of time\n\nThe time.h specification only requires that the first nine integer\nfields in the struct are present, but doesn't guarantee the order.\nMoreover, many implementations add additional fields that they will\nmodify when calling the standard functions which can cause memory\ncorruption if only enough memory is allocated for the mandatory fields.\nTo address this, I introduce a new scalanative_tm struct that has the\nnine mandatory fields and marshal that struct to and from the platform\nspecific native tm struct. This is is similar to what is done in stat.c.\n\nA number of the methods are not thread safe because they return pointers\nto native structs. To work around this, I only implement the _r variants\nof these methods. To keep the api reasonably nice for the user, I added\nversions of the non '_r' prefixed variants that require an implicit\nZone. These methods allocated the required data structures and pass them\ninto the '_r' variants. The returned pointers will have the same\nlifecycle as the zone.","distinct":true,"url":"https://api.github.com/repos/eatkins/scala-native/commits/499ee269e51526fcfecfed56df13e78b925fd1a7"}]}
{"actor":{"display_login":"eatkins"}}