diff --git a/XAlloc.c b/XAlloc.c index fbc642cc..4aa8e217 100644 --- a/XAlloc.c +++ b/XAlloc.c @@ -14,7 +14,7 @@ #include }*/ -static inline void fail() { +void fail() { curs_set(1); endwin(); err(1, NULL); @@ -44,6 +44,10 @@ void* xRealloc(void* ptr, size_t size) { return data; } +#undef xAsprintf + +#define xAsprintf(strp, fmt, ...) do { int _r=asprintf(strp, fmt, __VA_ARGS__); if (_r < 0) { fail(); } } while(0) + #define xSnprintf(fmt, len, ...) do { int _l=len; int _n=snprintf(fmt, _l, __VA_ARGS__); if (!(_n > -1 && _n < _l)) { curs_set(1); endwin(); err(1, NULL); } } while(0) #undef xStrdup diff --git a/XAlloc.h b/XAlloc.h index 97a1c0d0..2d464051 100644 --- a/XAlloc.h +++ b/XAlloc.h @@ -11,12 +11,18 @@ #include #include +extern void fail(void); + extern void* xMalloc(size_t size); extern void* xCalloc(size_t nmemb, size_t size); extern void* xRealloc(void* ptr, size_t size); +#undef xAsprintf + +#define xAsprintf(strp, fmt, ...) do { int _r=asprintf(strp, fmt, __VA_ARGS__); if (_r < 0) { fail(); } } while(0) + #define xSnprintf(fmt, len, ...) do { int _l=len; int _n=snprintf(fmt, _l, __VA_ARGS__); if (!(_n > -1 && _n < _l)) { curs_set(1); endwin(); err(1, NULL); } } while(0) #undef xStrdup diff --git a/linux/LinuxProcessList.c b/linux/LinuxProcessList.c index bcdd5515..0d25e365 100644 --- a/linux/LinuxProcessList.c +++ b/linux/LinuxProcessList.c @@ -822,11 +822,11 @@ static char* LinuxProcessList_updateTtyDevice(TtyDriver* ttyDrivers, unsigned in struct stat sstat; char* fullPath; for(;;) { - asprintf(&fullPath, "%s/%d", ttyDrivers[i].path, idx); + xAsprintf(&fullPath, "%s/%d", ttyDrivers[i].path, idx); int err = stat(fullPath, &sstat); if (err == 0 && major(sstat.st_rdev) == maj && minor(sstat.st_rdev) == min) return fullPath; free(fullPath); - asprintf(&fullPath, "%s%d", ttyDrivers[i].path, idx); + xAsprintf(&fullPath, "%s%d", ttyDrivers[i].path, idx); err = stat(fullPath, &sstat); if (err == 0 && major(sstat.st_rdev) == maj && minor(sstat.st_rdev) == min) return fullPath; free(fullPath); @@ -837,7 +837,7 @@ static char* LinuxProcessList_updateTtyDevice(TtyDriver* ttyDrivers, unsigned in if (err == 0 && tty_nr == sstat.st_rdev) return strdup(ttyDrivers[i].path); } char* out; - asprintf(&out, "/dev/%u:%u", maj, min); + xAsprintf(&out, "/dev/%u:%u", maj, min); return out; }