merge from open-source master
Change-Id: I612711a84996e22e826e4920be29c204cf5d7d44
This commit is contained in:
commit
64ba76c143
2 changed files with 40 additions and 13 deletions
|
|
@ -291,11 +291,11 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
#define LOG_ALWAYS_FATAL_IF(cond, ...) \
|
#define LOG_ALWAYS_FATAL_IF(cond, ...) \
|
||||||
( (CONDITION(cond)) \
|
( (CONDITION(cond)) \
|
||||||
? ((void)android_printAssert(#cond, LOG_TAG, __VA_ARGS__)) \
|
? ((void)android_printAssert(#cond, LOG_TAG, ## __VA_ARGS__)) \
|
||||||
: (void)0 )
|
: (void)0 )
|
||||||
|
|
||||||
#define LOG_ALWAYS_FATAL(...) \
|
#define LOG_ALWAYS_FATAL(...) \
|
||||||
( ((void)android_printAssert(NULL, LOG_TAG, __VA_ARGS__)) )
|
( ((void)android_printAssert(NULL, LOG_TAG, ## __VA_ARGS__)) )
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Versions of LOG_ALWAYS_FATAL_IF and LOG_ALWAYS_FATAL that
|
* Versions of LOG_ALWAYS_FATAL_IF and LOG_ALWAYS_FATAL that
|
||||||
|
|
@ -308,7 +308,7 @@ extern "C" {
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#define LOG_FATAL_IF(cond, ...) LOG_ALWAYS_FATAL_IF(cond, __VA_ARGS__)
|
#define LOG_FATAL_IF(cond, ...) LOG_ALWAYS_FATAL_IF(cond, ## __VA_ARGS__)
|
||||||
#define LOG_FATAL(...) LOG_ALWAYS_FATAL(__VA_ARGS__)
|
#define LOG_FATAL(...) LOG_ALWAYS_FATAL(__VA_ARGS__)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -317,7 +317,7 @@ extern "C" {
|
||||||
* Assertion that generates a log message when the assertion fails.
|
* Assertion that generates a log message when the assertion fails.
|
||||||
* Stripped out of release builds. Uses the current LOG_TAG.
|
* Stripped out of release builds. Uses the current LOG_TAG.
|
||||||
*/
|
*/
|
||||||
#define LOG_ASSERT(cond, ...) LOG_FATAL_IF(!(cond), __VA_ARGS__)
|
#define LOG_ASSERT(cond, ...) LOG_FATAL_IF(!(cond), ## __VA_ARGS__)
|
||||||
//#define LOG_ASSERT(cond) LOG_FATAL_IF(!(cond), "Assertion failed: " #cond)
|
//#define LOG_ASSERT(cond) LOG_FATAL_IF(!(cond), "Assertion failed: " #cond)
|
||||||
|
|
||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
|
|
@ -403,8 +403,24 @@ typedef enum {
|
||||||
#define android_vprintLog(prio, cond, tag, fmt...) \
|
#define android_vprintLog(prio, cond, tag, fmt...) \
|
||||||
__android_log_vprint(prio, tag, fmt)
|
__android_log_vprint(prio, tag, fmt)
|
||||||
|
|
||||||
|
/* XXX Macros to work around syntax errors in places where format string
|
||||||
|
* arg is not passed to LOG_ASSERT, LOG_ALWAYS_FATAL or LOG_ALWAYS_FATAL_IF
|
||||||
|
* (happens only in debug builds).
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Returns 2nd arg. Used to substitute default value if caller's vararg list
|
||||||
|
* is empty.
|
||||||
|
*/
|
||||||
|
#define __android_second(dummy, second, ...) second
|
||||||
|
|
||||||
|
/* If passed multiple args, returns ',' followed by all but 1st arg, otherwise
|
||||||
|
* returns nothing.
|
||||||
|
*/
|
||||||
|
#define __android_rest(first, ...) , ## __VA_ARGS__
|
||||||
|
|
||||||
#define android_printAssert(cond, tag, fmt...) \
|
#define android_printAssert(cond, tag, fmt...) \
|
||||||
__android_log_assert(cond, tag, fmt)
|
__android_log_assert(cond, tag, \
|
||||||
|
__android_second(0, ## fmt, NULL) __android_rest(fmt))
|
||||||
|
|
||||||
#define android_writeLog(prio, tag, text) \
|
#define android_writeLog(prio, tag, text) \
|
||||||
__android_log_write(prio, tag, text)
|
__android_log_write(prio, tag, text)
|
||||||
|
|
|
||||||
|
|
@ -223,12 +223,23 @@ int __android_log_buf_print(int bufID, int prio, const char *tag, const char *fm
|
||||||
void __android_log_assert(const char *cond, const char *tag,
|
void __android_log_assert(const char *cond, const char *tag,
|
||||||
const char *fmt, ...)
|
const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
|
||||||
char buf[LOG_BUF_SIZE];
|
char buf[LOG_BUF_SIZE];
|
||||||
|
|
||||||
va_start(ap, fmt);
|
if (fmt) {
|
||||||
vsnprintf(buf, LOG_BUF_SIZE, fmt, ap);
|
va_list ap;
|
||||||
va_end(ap);
|
va_start(ap, fmt);
|
||||||
|
vsnprintf(buf, LOG_BUF_SIZE, fmt, ap);
|
||||||
|
va_end(ap);
|
||||||
|
} else {
|
||||||
|
/* Msg not provided, log condition. N.B. Do not use cond directly as
|
||||||
|
* format string as it could contain spurious '%' syntax (e.g.
|
||||||
|
* "%d" in "blocks%devs == 0").
|
||||||
|
*/
|
||||||
|
if (cond)
|
||||||
|
snprintf(buf, LOG_BUF_SIZE, "Assertion failed: %s", cond);
|
||||||
|
else
|
||||||
|
strcpy(buf, "Unspecified assertion failed");
|
||||||
|
}
|
||||||
|
|
||||||
__android_log_write(ANDROID_LOG_FATAL, tag, buf);
|
__android_log_write(ANDROID_LOG_FATAL, tag, buf);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue