mirror of
				https://github.com/stedolan/jq.git
				synced 2024-05-11 05:55:39 +00:00 
			
		
		
		
	After something is popped from a stack, we overwrite the memory with uninitialised data (if JQ_DEBUG is on). This means that valgrind reports use-after-pop as an uninitialised memory error.
		
			
				
	
	
		
			22 lines
		
	
	
		
			418 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
		
			418 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef JV_ALLOC_H
 | |
| #define JV_ALLOC_H
 | |
| 
 | |
| #include <stddef.h>
 | |
| 
 | |
| #if JQ_DEBUG
 | |
| extern volatile char jv_mem_uninitialised;
 | |
| #endif
 | |
| 
 | |
| static void jv_mem_invalidate(void* mem, size_t n) {
 | |
| #if JQ_DEBUG
 | |
|   char* m = mem;
 | |
|   while (n--) *m++ ^= jv_mem_uninitialised ^ jv_mem_uninitialised;
 | |
| #endif
 | |
| }
 | |
| 
 | |
| void* jv_mem_alloc(size_t);
 | |
| void jv_mem_free(void*);
 | |
| __attribute__((warn_unused_result)) void* jv_mem_realloc(void*, size_t);
 | |
| 
 | |
| #endif
 |