mirror of
				https://gitlab.freedesktop.org/wayland/wayland.git
				synced 2025-11-03 09:01:42 -05:00 
			
		
		
		
	wayland-util: return -1 if wl_array_copy() fails
We might have to perform memory allocations in wl_array_copy(), so catch out-of-memory errors in wl_array_add() and return -1 before changing any state. Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit is contained in:
		
							parent
							
								
									66e4aa98cf
								
							
						
					
					
						commit
						0d5850e6d6
					
				
					 2 changed files with 10 additions and 4 deletions
				
			
		| 
						 | 
				
			
			@ -132,12 +132,18 @@ wl_array_add(struct wl_array *array, size_t size)
 | 
			
		|||
	return p;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
WL_EXPORT void
 | 
			
		||||
WL_EXPORT int
 | 
			
		||||
wl_array_copy(struct wl_array *array, struct wl_array *source)
 | 
			
		||||
{
 | 
			
		||||
	array->size = 0;
 | 
			
		||||
	wl_array_add(array, source->size);
 | 
			
		||||
	if (array->size < source->size) {
 | 
			
		||||
		if (!wl_array_add(array, source->size - array->size))
 | 
			
		||||
			return -1;
 | 
			
		||||
	} else {
 | 
			
		||||
		array->size = source->size;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	memcpy(array->data, source->data, source->size);
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
union map_entry {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -165,7 +165,7 @@ struct wl_array {
 | 
			
		|||
void wl_array_init(struct wl_array *array);
 | 
			
		||||
void wl_array_release(struct wl_array *array);
 | 
			
		||||
void *wl_array_add(struct wl_array *array, size_t size);
 | 
			
		||||
void wl_array_copy(struct wl_array *array, struct wl_array *source);
 | 
			
		||||
int wl_array_copy(struct wl_array *array, struct wl_array *source);
 | 
			
		||||
 | 
			
		||||
typedef int32_t wl_fixed_t;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue