浏览代码

using 'offsetof' to compute the size of parts of a structure

Roberto Ierusalimschy 7 年之前
父节点
当前提交
38d3bc8909
共有 1 个文件被更改,包括 5 次插入5 次删除
  1. 5 5
      lfunc.h

+ 5 - 5
lfunc.h

@@ -1,5 +1,5 @@
 /*
-** $Id: lfunc.h,v 2.18 2017/06/29 15:06:44 roberto Exp roberto $
+** $Id: lfunc.h,v 2.19 2018/01/28 15:13:26 roberto Exp roberto $
 ** Auxiliary functions to manipulate prototypes and closures
 ** See Copyright Notice in lua.h
 */
@@ -11,11 +11,11 @@
 #include "lobject.h"
 
 
-#define sizeCclosure(n)	(cast_int(sizeof(CClosure)) + \
-                         cast_int(sizeof(TValue)*((n)-1)))
+#define sizeCclosure(n)	(cast_int(offsetof(CClosure, upvalue)) + \
+                         cast_int(sizeof(TValue)) * (n))
 
-#define sizeLclosure(n)	(cast_int(sizeof(LClosure)) + \
-                         cast_int(sizeof(TValue *)*((n)-1)))
+#define sizeLclosure(n)	(cast_int(offsetof(LClosure, upvals)) + \
+                         cast_int(sizeof(TValue *)) * (n))
 
 
 /* test whether thread is in 'twups' list */