mirror of https://github.com/xzeldon/htop.git
Introduce xAsprintf as checked version of asprintf
This commit is contained in:
parent
40ac7a88af
commit
3856bf574b
6
XAlloc.c
6
XAlloc.c
|
@ -14,7 +14,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
static inline void fail() {
|
void fail() {
|
||||||
curs_set(1);
|
curs_set(1);
|
||||||
endwin();
|
endwin();
|
||||||
err(1, NULL);
|
err(1, NULL);
|
||||||
|
@ -44,6 +44,10 @@ void* xRealloc(void* ptr, size_t size) {
|
||||||
return data;
|
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)
|
#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
|
#undef xStrdup
|
||||||
|
|
6
XAlloc.h
6
XAlloc.h
|
@ -11,12 +11,18 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
extern void fail(void);
|
||||||
|
|
||||||
extern void* xMalloc(size_t size);
|
extern void* xMalloc(size_t size);
|
||||||
|
|
||||||
extern void* xCalloc(size_t nmemb, size_t size);
|
extern void* xCalloc(size_t nmemb, size_t size);
|
||||||
|
|
||||||
extern void* xRealloc(void* ptr, 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)
|
#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
|
#undef xStrdup
|
||||||
|
|
|
@ -822,11 +822,11 @@ static char* LinuxProcessList_updateTtyDevice(TtyDriver* ttyDrivers, unsigned in
|
||||||
struct stat sstat;
|
struct stat sstat;
|
||||||
char* fullPath;
|
char* fullPath;
|
||||||
for(;;) {
|
for(;;) {
|
||||||
asprintf(&fullPath, "%s/%d", ttyDrivers[i].path, idx);
|
xAsprintf(&fullPath, "%s/%d", ttyDrivers[i].path, idx);
|
||||||
int err = stat(fullPath, &sstat);
|
int err = stat(fullPath, &sstat);
|
||||||
if (err == 0 && major(sstat.st_rdev) == maj && minor(sstat.st_rdev) == min) return fullPath;
|
if (err == 0 && major(sstat.st_rdev) == maj && minor(sstat.st_rdev) == min) return fullPath;
|
||||||
free(fullPath);
|
free(fullPath);
|
||||||
asprintf(&fullPath, "%s%d", ttyDrivers[i].path, idx);
|
xAsprintf(&fullPath, "%s%d", ttyDrivers[i].path, idx);
|
||||||
err = stat(fullPath, &sstat);
|
err = stat(fullPath, &sstat);
|
||||||
if (err == 0 && major(sstat.st_rdev) == maj && minor(sstat.st_rdev) == min) return fullPath;
|
if (err == 0 && major(sstat.st_rdev) == maj && minor(sstat.st_rdev) == min) return fullPath;
|
||||||
free(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);
|
if (err == 0 && tty_nr == sstat.st_rdev) return strdup(ttyDrivers[i].path);
|
||||||
}
|
}
|
||||||
char* out;
|
char* out;
|
||||||
asprintf(&out, "/dev/%u:%u", maj, min);
|
xAsprintf(&out, "/dev/%u:%u", maj, min);
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue