Hi David, "Thompson, David" <[email protected]> writes: > Here's a patch I came up with to enable (and fix where necessary) the > support for signed integer and double struct fields.
Great, thanks for working on it! This is not a proper review, just a couple of questions and comments. > Am I on the right track here? The first thing I noticed is that the patch assumes that doubles are the same size as pointers. Obviously this is not the case on 32-bit systems. What's the plan for those systems? The patch also currently assumes that longs and pointers are the same size, and this turns out to be false on LLP64 systems such as 64-bit Windows. See <https://debbugs.gnu.org/22406>. However, it should be straightforward to fix this issue. > + if ((prot != 'r' && prot != 'w') || inits_idx == n_inits) > + *mem = 0.0; Note that 'mem' is of type scm_t_bits*, so the 0.0 will be converted to the integer 0 and then stored as an integer, which I guess is not what you meant. Note that in practice this works on IEEE 754 systems, where 0.0 is represented as all zero bits, but the code is somewhat misleading and less portable than it could be. Thanks, Mark
