Mark Wielaard 190c93d454 Refix dlclose_leak.c test.
By introducing an extra line to declare int i; we broke the expected
line numbers in the test. Just declare i on the same line as the for loop.
2018-01-16 11:31:43 +01:00

37 lines
1.0 KiB
C

/* Test reporting of memory leaks in objects that have been dlopen'ed.
* File: dlclose_leak.c */
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
#include <assert.h>
int (*jmp_on_uninit)(void);
char* (*alloc_1_byte)(void);
int main(int argc, char** argv)
{
int i; for (i = 0; i < 2; ++i)
{
char* memToLeak;
char x __attribute__((unused));
void* handle = dlopen("./dlclose_leak_so.so", RTLD_NOW);
if(!handle) {
printf("FAILURE to dlopen dlclose_leak_so.so\n");
return EXIT_FAILURE;
}
jmp_on_uninit = dlsym(handle,"jmp_on_uninit");
//fprintf(stderr, "jmp_on_uninit: %p\n", jmp_on_uninit);
assert(jmp_on_uninit);
alloc_1_byte = dlsym(handle,"alloc_1_byte");
//fprintf(stderr, "alloc_1_byte: %p\n", alloc_1_byte);
assert(alloc_1_byte);
(void)jmp_on_uninit();
memToLeak = alloc_1_byte();
dlclose(handle);
x = memToLeak[-1];
}
fprintf(stderr, "done!\n");
return (EXIT_SUCCESS);
}