diff --git a/src/opcodes.c b/src/opcodes.c index 6e4f4780bfc11434387623eb8d7d6eefed32fe84..698563f5a21d2864ea329f21b6778aaf3b811019 100644 --- a/src/opcodes.c +++ b/src/opcodes.c @@ -25,7 +25,7 @@ #include "security.h" #include "bignum.h" -RCSID("$Id: opcodes.c,v 1.62 1999/10/31 22:41:44 grubba Exp $"); +RCSID("$Id: opcodes.c,v 1.63 1999/10/31 22:53:38 grubba Exp $"); void index_no_free(struct svalue *to,struct svalue *what,struct svalue *ind) { @@ -803,8 +803,14 @@ static INLINE float low_parse_IEEE_float(char *b, int sz) } while(0) #else #define EXTRACT_FLOAT(SVAL, INPUT, SHIFT) \ - /* FIXME! */ \ - (SVAL).u.float_number = low_parse_IEEE_float((INPUT), 4) + do { \ + char x[4]; \ + x[0] = (INPUT)[0]; \ + x[1] = (INPUT)[1]; \ + x[2] = (INPUT)[2]; \ + x[3] = (INPUT)[3]; \ + (SVAL).u.float_number = low_parse_IEEE_float(x, 4); \ + } while(0) #endif #endif @@ -839,8 +845,18 @@ static INLINE float low_parse_IEEE_float(char *b, int sz) } while(0) #else #define EXTRACT_DOUBLE(SVAL, INPUT, SHIFT) \ - /* FIXME! */ \ - (SVAL).u.float_number = low_parse_IEEE_float((INPUT), 8) + do { \ + char x[8]; \ + x[0] = (INPUT)[0]; \ + x[1] = (INPUT)[1]; \ + x[2] = (INPUT)[2]; \ + x[3] = (INPUT)[3]; \ + x[4] = (INPUT)[4]; \ + x[5] = (INPUT)[5]; \ + x[6] = (INPUT)[6]; \ + x[7] = (INPUT)[7]; \ + (SVAL).u.float_number = low_parse_IEEE_float(x, 8); \ + } while(0) #endif #endif