E void VDECL(raw_printf, (const char *, ...)) PRINTF_F(1, 2);
E void VDECL(impossible, (const char *, ...)) PRINTF_F(1, 2);
E void VDECL(config_error_add, (const char *, ...)) PRINTF_F(1, 2);
-E void FDECL(nhassert_failed, (const char *, int));
+E void FDECL(nhassert_failed, (const char *, const char *, int));
/* ### polyself.c ### */
/* Supply nhassert macro if not supplied by port */
#ifndef nhassert
#define nhassert(expression) (void)((!!(expression)) || \
- (nhassert_failed(__FILE__, __LINE__), 0))
+ (nhassert_failed(#expression, __FILE__, __LINE__), 0))
#endif
#endif /* GLOBAL_H */
/* nhassert_failed is called when an nhassert's condition is false */
void
-nhassert_failed(filepath, line)
+nhassert_failed(expression, filepath, line)
+ const char* expression;
const char * filepath;
int line;
{
filename = (filename == NULL ? strrchr(filepath, '\\') : filename);
filename = (filename == NULL ? filepath : filename + 1);
- impossible("nhassert failed in file '%s' at line %d", filename, line);
+ impossible("nhassert(%s) failed in file '%s' at line %d", expression, filename, line);
}
/*pline.c*/