Page MenuHomeFreeBSD

D14472.diff
No OneTemporary

D14472.diff

Index: head/contrib/lua/src/llimits.h
===================================================================
--- head/contrib/lua/src/llimits.h
+++ head/contrib/lua/src/llimits.h
@@ -66,7 +66,9 @@
#else
typedef union {
lua_Number n;
+#if LUA_FLOAT_TYPE != LUA_FLOAT_INT64
double u;
+#endif
void *s;
lua_Integer i;
long l;
Index: head/contrib/lua/src/lstrlib.c
===================================================================
--- head/contrib/lua/src/lstrlib.c
+++ head/contrib/lua/src/lstrlib.c
@@ -1134,7 +1134,11 @@
/* dummy structure to get native alignment requirements */
struct cD {
char c;
- union { double d; void *p; lua_Integer i; lua_Number n; } u;
+ union {
+#if LUA_FLOAT_TYPE != LUA_FLOAT_INT64
+ double d;
+#endif
+ void *p; lua_Integer i; lua_Number n; } u;
};
#define MAXALIGN (offsetof(struct cD, u))
@@ -1144,8 +1148,10 @@
** Union for serializing floats
*/
typedef union Ftypes {
+#if LUA_FLOAT_TYPE != LUA_FLOAT_INT64
float f;
double d;
+#endif
lua_Number n;
char buff[5 * sizeof(lua_Number)]; /* enough for any float type */
} Ftypes;
@@ -1235,8 +1241,10 @@
case 'j': *size = sizeof(lua_Integer); return Kint;
case 'J': *size = sizeof(lua_Integer); return Kuint;
case 'T': *size = sizeof(size_t); return Kuint;
+#if LUA_FLOAT_TYPE != LUA_FLOAT_INT64
case 'f': *size = sizeof(float); return Kfloat;
case 'd': *size = sizeof(double); return Kfloat;
+#endif
case 'n': *size = sizeof(lua_Number); return Kfloat;
case 'i': *size = getnumlimit(h, fmt, sizeof(int)); return Kint;
case 'I': *size = getnumlimit(h, fmt, sizeof(int)); return Kuint;
@@ -1369,9 +1377,13 @@
volatile Ftypes u;
char *buff = luaL_prepbuffsize(&b, size);
lua_Number n = luaL_checknumber(L, arg); /* get argument */
+#if LUA_FLOAT_TYPE != LUA_FLOAT_INT64
if (size == sizeof(u.f)) u.f = (float)n; /* copy it into 'u' */
else if (size == sizeof(u.d)) u.d = (double)n;
else u.n = n;
+#else
+ u.n = n;
+#endif
/* move 'u' to final result, correcting endianness if needed */
copywithendian(buff, u.buff, size, h.islittle);
luaL_addsize(&b, size);
@@ -1507,9 +1519,13 @@
volatile Ftypes u;
lua_Number num;
copywithendian(u.buff, data + pos, size, h.islittle);
+#if LUA_FLOAT_TYPE != LUA_FLOAT_INT64
if (size == sizeof(u.f)) num = (lua_Number)u.f;
else if (size == sizeof(u.d)) num = (lua_Number)u.d;
else num = u.n;
+#else
+ num = u.n;
+#endif
lua_pushnumber(L, num);
break;
}

File Metadata

Mime Type
text/plain
Expires
Sun, Jan 18, 2:18 AM (1 h, 43 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27703132
Default Alt Text
D14472.diff (2 KB)

Event Timeline