Use CPPTRACE_PATH_MAX more consistently, and another small refactor
This commit is contained in:
parent
87cd24438b
commit
0ee29d0855
@ -22,9 +22,9 @@
|
|||||||
namespace cpptrace {
|
namespace cpptrace {
|
||||||
namespace detail {
|
namespace detail {
|
||||||
inline void get_safe_object_frame(frame_ptr address, safe_object_frame* out) {
|
inline void get_safe_object_frame(frame_ptr address, safe_object_frame* out) {
|
||||||
|
out->raw_address = address;
|
||||||
dl_find_object result;
|
dl_find_object result;
|
||||||
if(_dl_find_object(reinterpret_cast<void*>(address), &result) == 0) {
|
if(_dl_find_object(reinterpret_cast<void*>(address), &result) == 0) {
|
||||||
out->raw_address = address;
|
|
||||||
out->address_relative_to_object_start = address - reinterpret_cast<frame_ptr>(result.dlfo_map_start);
|
out->address_relative_to_object_start = address - reinterpret_cast<frame_ptr>(result.dlfo_map_start);
|
||||||
if(result.dlfo_link_map->l_name != nullptr && result.dlfo_link_map->l_name[0] != 0) {
|
if(result.dlfo_link_map->l_name != nullptr && result.dlfo_link_map->l_name[0] != 0) {
|
||||||
std::size_t path_length = std::strlen(result.dlfo_link_map->l_name);
|
std::size_t path_length = std::strlen(result.dlfo_link_map->l_name);
|
||||||
@ -35,8 +35,8 @@ namespace detail {
|
|||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
// empty l_name, this means it's the currently running executable
|
// empty l_name, this means it's the currently running executable
|
||||||
memset(out->object_path, 0, PATH_MAX + 1);
|
memset(out->object_path, 0, CPPTRACE_PATH_MAX + 1);
|
||||||
auto res = readlink("/proc/self/exe", out->object_path, PATH_MAX);
|
auto res = readlink("/proc/self/exe", out->object_path, CPPTRACE_PATH_MAX);
|
||||||
if(res == -1) {
|
if(res == -1) {
|
||||||
// error handling?
|
// error handling?
|
||||||
}
|
}
|
||||||
@ -44,7 +44,6 @@ namespace detail {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// std::cout<<"error"<<std::endl;
|
// std::cout<<"error"<<std::endl;
|
||||||
out->raw_address = address;
|
|
||||||
out->address_relative_to_object_start = 0;
|
out->address_relative_to_object_start = 0;
|
||||||
out->object_path[0] = 0;
|
out->object_path[0] = 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -37,7 +37,7 @@ namespace detail {
|
|||||||
#include <mach-o/dyld.h>
|
#include <mach-o/dyld.h>
|
||||||
#include <sys/syslimits.h>
|
#include <sys/syslimits.h>
|
||||||
|
|
||||||
#define CPPTRACE_MAX_PATH PATH_MAX
|
#define CPPTRACE_MAX_PATH CPPTRACE_PATH_MAX
|
||||||
|
|
||||||
namespace cpptrace {
|
namespace cpptrace {
|
||||||
namespace detail {
|
namespace detail {
|
||||||
@ -49,7 +49,7 @@ namespace detail {
|
|||||||
static bool valid = false;
|
static bool valid = false;
|
||||||
if(!did_init) {
|
if(!did_init) {
|
||||||
did_init = true;
|
did_init = true;
|
||||||
std::uint32_t bufferSize = PATH_MAX + 1;
|
std::uint32_t bufferSize = CPPTRACE_PATH_MAX + 1;
|
||||||
char buffer[bufferSize];
|
char buffer[bufferSize];
|
||||||
if(_NSGetExecutablePath(buffer, &bufferSize) == 0) {
|
if(_NSGetExecutablePath(buffer, &bufferSize) == 0) {
|
||||||
name.assign(buffer, bufferSize);
|
name.assign(buffer, bufferSize);
|
||||||
@ -67,7 +67,7 @@ namespace detail {
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#define CPPTRACE_MAX_PATH PATH_MAX
|
#define CPPTRACE_MAX_PATH CPPTRACE_PATH_MAX
|
||||||
|
|
||||||
namespace cpptrace {
|
namespace cpptrace {
|
||||||
namespace detail {
|
namespace detail {
|
||||||
@ -79,8 +79,8 @@ namespace detail {
|
|||||||
static bool valid = false;
|
static bool valid = false;
|
||||||
if(!did_init) {
|
if(!did_init) {
|
||||||
did_init = true;
|
did_init = true;
|
||||||
char buffer[PATH_MAX + 1];
|
char buffer[CPPTRACE_PATH_MAX + 1];
|
||||||
const ssize_t size = readlink("/proc/self/exe", buffer, PATH_MAX);
|
const ssize_t size = readlink("/proc/self/exe", buffer, CPPTRACE_PATH_MAX);
|
||||||
if(size == -1) {
|
if(size == -1) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user