Browse Source

new macro 'lua_longassert' that is equivalent to an assertion without
a stringfication of the condition, to avoid too long string literals
(limited by C90 to ~510 characters)

Roberto Ierusalimschy 14 years ago
parent
commit
3cf1729a02
2 changed files with 7 additions and 5 deletions
  1. 4 1
      llimits.h
  2. 3 4
      lobject.h

+ 4 - 1
llimits.h

@@ -1,5 +1,5 @@
 /*
-** $Id: llimits.h,v 1.87 2011/02/01 16:52:38 roberto Exp roberto $
+** $Id: llimits.h,v 1.88 2011/02/28 17:32:10 roberto Exp roberto $
 ** Limits, basic types, and some other `installation-dependent' definitions
 ** See Copyright Notice in lua.h
 */
@@ -59,9 +59,12 @@ typedef LUAI_UACNUMBER l_uacNumber;
 /* internal assertions for in-house debugging */
 #if defined(lua_assert)
 #define check_exp(c,e)		(lua_assert(c), (e))
+/* to avoid problems with conditions too long */
+#define lua_longassert(c)	{ if (!(c)) lua_assert(0); }
 #else
 #define lua_assert(c)		/* empty */
 #define check_exp(c,e)		(e)
+#define lua_longassert(c)	/* empty */
 #endif
 
 /*

+ 3 - 4
lobject.h

@@ -1,5 +1,5 @@
 /*
-** $Id: lobject.h,v 2.51 2011/05/04 17:04:06 roberto Exp roberto $
+** $Id: lobject.h,v 2.52 2011/05/05 15:53:23 roberto Exp roberto $
 ** Type definitions for Lua objects
 ** See Copyright Notice in lua.h
 */
@@ -152,10 +152,9 @@ typedef struct lua_TValue {
 /* Macros for internal tests */
 #define righttt(obj)		(ttype(obj) == gcvalue(obj)->gch.tt)
 
-#define checkconsistency(obj)	lua_assert(!iscollectable(obj) || righttt(obj))
-
 #define checkliveness(g,obj) \
-  lua_assert(!iscollectable(obj) || (righttt(obj) && !isdead(g,gcvalue(obj))))
+  lua_longassert(!iscollectable(obj) || \
+                 (righttt(obj) && !isdead(g,gcvalue(obj))))
 
 
 /* Macros to set values */