diff --git a/src/bin/debug/strace/TypeHandler.cpp b/src/bin/debug/strace/TypeHandler.cpp index ca5037089a..c98bfe3d70 100644 --- a/src/bin/debug/strace/TypeHandler.cpp +++ b/src/bin/debug/strace/TypeHandler.cpp @@ -228,6 +228,8 @@ FlagsTypeHandler::RenderValue(Context &context, unsigned int value) const string rendered; FlagsList::const_reverse_iterator i = fList.rbegin(); for (; i != fList.rend(); i++) { + if (value == 0) + break; if ((value & i->value) != i->value) continue; @@ -241,7 +243,7 @@ FlagsTypeHandler::RenderValue(Context &context, unsigned int value) const rendered += " | "; char hex[20]; - snprintf(hex, 20, "%x", value); + snprintf(hex, sizeof(hex), "0x%x", value); rendered += hex; } if (rendered.empty()) diff --git a/src/bin/debug/strace/strace.cpp b/src/bin/debug/strace/strace.cpp index 011dd12ce9..446b003495 100644 --- a/src/bin/debug/strace/strace.cpp +++ b/src/bin/debug/strace/strace.cpp @@ -272,8 +272,9 @@ patch_syscalls() for (size_t i = 0; i < sSyscallVector.size(); i++) { Syscall *syscall = sSyscallVector[i]; - const string returnTypeName = syscall->ReturnType()->TypeName(); + // patch return type handlers + const string returnTypeName = syscall->ReturnType()->TypeName(); if (returnTypeName == "status_t" || returnTypeName == "ssize_t" || returnTypeName == "int") { syscall->ReturnType()->SetHandler(create_status_t_type_handler());