pmap: use correct types for memory allocation
Fixes error which did not happen always. Changes of being affected by the bug where greater the more there where pids defined as pmap argument. The debian bug referral can almost certainly reproduce the problem, especially when tried multiple times in row. pmap: malloc.c:3096: sYSMALLOc: Assertion `(old_top == (((mbinptr) (((char *) &((av)->bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, fd)))) && old_size == 0) || ((unsigned long) (old_size) >= (unsigned long)((((__builtin_offsetof (struct malloc_chunk, fd_nextsize))+((2 * (sizeof(size_t))) - 1)) & ~((2 * (sizeof(size_t))) - 1))) && ((old_top)->size & 0x1) && ((unsigned long)old_end & pagemask) == 0)' failed. Reported-by: lee <lee@yun.yagibdah.de> Bug-Debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=688180 Signed-off-by: Sami Kerola <kerolasa@iki.fi>
This commit is contained in:
parent
ee03bb92cb
commit
c043c47ddd
2
pmap.c
2
pmap.c
@ -661,7 +661,7 @@ int main(int argc, char **argv)
|
||||
x_option && (d_option || X_option))
|
||||
xerrx(EXIT_FAILURE, _("options -d, -x, -X are mutually exclusive"));
|
||||
|
||||
pidlist = xmalloc(sizeof(unsigned) * argc);
|
||||
pidlist = xmalloc(sizeof(unsigned long) * argc);
|
||||
|
||||
while (*argv) {
|
||||
char *walk = *argv++;
|
||||
|
@ -50,14 +50,14 @@ void *xcalloc(unsigned int size) {
|
||||
return p;
|
||||
}
|
||||
|
||||
void *xmalloc(unsigned int size) {
|
||||
void *xmalloc(size_t size) {
|
||||
void *p;
|
||||
|
||||
if (size == 0)
|
||||
++size;
|
||||
p = malloc(size);
|
||||
if (!p) {
|
||||
xalloc_err_handler("%s failed to allocate %u bytes of memory", __func__, size);
|
||||
xalloc_err_handler("%s failed to allocate %zu bytes of memory", __func__, size);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
return(p);
|
||||
|
@ -9,7 +9,7 @@ EXTERN_C_BEGIN
|
||||
extern message_fn xalloc_err_handler;
|
||||
|
||||
extern void *xcalloc(unsigned int size) MALLOC;
|
||||
extern void *xmalloc(unsigned int size) MALLOC;
|
||||
extern void *xmalloc(size_t size) MALLOC;
|
||||
extern void *xrealloc(void *oldp, unsigned int size) MALLOC;
|
||||
extern char *xstrdup(const char *str) MALLOC;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user