[PATCH weston 1/2] clients: use xmalloc in more places

Kristian Høgsberg hoegsberg at gmail.com
Wed Aug 7 16:29:25 PDT 2013


On Wed, Aug 07, 2013 at 03:34:59PM -0700, Brian Lovin wrote:
> For the clients continue to use xmalloc() to simplify OOM-handling.

Thanks, looks good, applied.

Kristian

> Signed-off-by: Brian Lovin <brian.j.lovin at intel.com>
> ---
>  clients/dnd.c          |  6 ++----
>  clients/editor.c       |  3 ++-
>  clients/keyboard.c     |  4 ++--
>  clients/resizor.c      |  4 +---
>  clients/screenshot.c   |  2 +-
>  clients/subsurfaces.c  |  8 ++++----
>  clients/tablet-shell.c |  6 +++---
>  clients/terminal.c     |  4 +---
>  clients/window.c       | 19 +++++++++++--------
>  9 files changed, 27 insertions(+), 29 deletions(-)
> 
> diff --git a/clients/dnd.c b/clients/dnd.c
> index 140f3f4..ff46fd7 100644
> --- a/clients/dnd.c
> +++ b/clients/dnd.c
> @@ -391,7 +391,7 @@ dnd_button_handler(struct widget *widget,
>  	y -= allocation.y;
>  
>  	if (item && state == WL_POINTER_BUTTON_STATE_PRESSED) {
> -		dnd_drag = malloc(sizeof *dnd_drag);
> +		dnd_drag = xmalloc(sizeof *dnd_drag);
>  		dnd_drag->dnd = dnd;
>  		dnd_drag->input = input;
>  		dnd_drag->time = time;
> @@ -567,9 +567,7 @@ dnd_create(struct display *display)
>  	int32_t width, height;
>  	unsigned int i;
>  
> -	dnd = malloc(sizeof *dnd);
> -	if (dnd == NULL)
> -		return dnd;
> +	dnd = xmalloc(sizeof *dnd);
>  	memset(dnd, 0, sizeof *dnd);
>  
>  	dnd->window = window_create(display);
> diff --git a/clients/editor.c b/clients/editor.c
> index 1300ccf..12650f3 100644
> --- a/clients/editor.c
> +++ b/clients/editor.c
> @@ -501,7 +501,8 @@ text_entry_create(struct editor *editor, const char *text)
>  {
>  	struct text_entry *entry;
>  
> -	entry = calloc(1, sizeof *entry);
> +	entry = xmalloc(sizeof *entry);
> +	memset(entry, 0, sizeof *entry);
>  
>  	entry->widget = widget_add_widget(editor->widget, entry);
>  	entry->window = editor->window;
> diff --git a/clients/keyboard.c b/clients/keyboard.c
> index a2fbded..5fe5d9d 100644
> --- a/clients/keyboard.c
> +++ b/clients/keyboard.c
> @@ -384,7 +384,7 @@ resize_handler(struct widget *widget,
>  static char *
>  insert_text(const char *text, uint32_t offset, const char *insert)
>  {
> -	char *new_text = malloc(strlen(text) + strlen(insert) + 1);
> +	char *new_text = xmalloc(strlen(text) + strlen(insert) + 1);
>  
>  	strncat(new_text, text, offset);
>  	new_text[offset] = '\0';
> @@ -836,7 +836,7 @@ keyboard_create(struct output *output, struct virtual_keyboard *virtual_keyboard
>  
>  	layout = get_current_layout(virtual_keyboard);
>  
> -	keyboard = malloc(sizeof *keyboard);
> +	keyboard = xmalloc(sizeof *keyboard);
>  	memset(keyboard, 0, sizeof *keyboard);
>  
>  	keyboard->keyboard = virtual_keyboard;
> diff --git a/clients/resizor.c b/clients/resizor.c
> index 27879a0..49b2817 100644
> --- a/clients/resizor.c
> +++ b/clients/resizor.c
> @@ -233,9 +233,7 @@ resizor_create(struct display *display)
>  {
>  	struct resizor *resizor;
>  
> -	resizor = malloc(sizeof *resizor);
> -	if (resizor == NULL)
> -		return resizor;
> +	resizor = xmalloc(sizeof *resizor);
>  	memset(resizor, 0, sizeof *resizor);
>  
>  	resizor->window = window_create(display);
> diff --git a/clients/screenshot.c b/clients/screenshot.c
> index 7511ef7..d58d8b1 100644
> --- a/clients/screenshot.c
> +++ b/clients/screenshot.c
> @@ -115,7 +115,7 @@ handle_global(void *data, struct wl_registry *registry,
>  	static struct screenshooter_output *output;
>  
>  	if (strcmp(interface, "wl_output") == 0) {
> -		output = malloc(sizeof *output);
> +		output = xmalloc(sizeof *output);
>  		output->output = wl_registry_bind(registry, name,
>  						  &wl_output_interface, 1);
>  		wl_list_insert(&output_list, &output->link);
> diff --git a/clients/subsurfaces.c b/clients/subsurfaces.c
> index 7fa8abb..f93057e 100644
> --- a/clients/subsurfaces.c
> +++ b/clients/subsurfaces.c
> @@ -489,7 +489,8 @@ triangle_create(struct window *window, struct egl_state *egl)
>  {
>  	struct triangle *tri;
>  
> -	tri = calloc(1, sizeof *tri);
> +	tri = xmalloc(sizeof *tri);
> +	memset(tri, 0, sizeof *tri);
>  
>  	tri->egl = egl;
>  	tri->widget = window_add_subsurface(window, tri,
> @@ -709,9 +710,8 @@ demoapp_create(struct display *display)
>  {
>  	struct demoapp *app;
>  
> -	app = calloc(1, sizeof *app);
> -	if (!app)
> -		return NULL;
> +	app = xmalloc(sizeof *app);
> +	memset(app, 0, sizeof *app);
>  
>  	app->egl = egl_state_create(display_get_display(display));
>  
> diff --git a/clients/tablet-shell.c b/clients/tablet-shell.c
> index d7aac70..3b52069 100644
> --- a/clients/tablet-shell.c
> +++ b/clients/tablet-shell.c
> @@ -230,7 +230,7 @@ homescreen_create(struct tablet *tablet)
>  {
>  	struct homescreen *homescreen;
>  
> -	homescreen = malloc (sizeof *homescreen);
> +	homescreen = xmalloc(sizeof *homescreen);
>  	memset(homescreen, 0, sizeof *homescreen);
>  
>  	homescreen->window = window_create_custom(tablet->display);
> @@ -248,7 +248,7 @@ lockscreen_create(struct tablet *tablet)
>  {
>  	struct lockscreen *lockscreen;
>  
> -	lockscreen = malloc (sizeof *lockscreen);
> +	lockscreen = xmalloc(sizeof *lockscreen);
>  	memset(lockscreen, 0, sizeof *lockscreen);
>  
>  	lockscreen->window = window_create_custom(tablet->display);
> @@ -395,7 +395,7 @@ tablet_shell_add_launcher(struct tablet *tablet,
>  	struct launcher *launcher;
>  	struct homescreen *homescreen = tablet->homescreen;
>  
> -	launcher = malloc(sizeof *launcher);
> +	launcher = xmalloc(sizeof *launcher);
>  	launcher->icon = load_cairo_surface(icon);
>  	if ( !launcher->icon ||
>  	     cairo_surface_status (launcher->icon) != CAIRO_STATUS_SUCCESS) {
> diff --git a/clients/terminal.c b/clients/terminal.c
> index 0d4f726..1cc26d0 100644
> --- a/clients/terminal.c
> +++ b/clients/terminal.c
> @@ -2552,9 +2552,7 @@ terminal_create(struct display *display)
>  	cairo_t *cr;
>  	cairo_text_extents_t text_extents;
>  
> -	terminal = malloc(sizeof *terminal);
> -	if (terminal == NULL)
> -		return terminal;
> +	terminal = xmalloc(sizeof *terminal);
>  
>  	memset(terminal, 0, sizeof *terminal);
>  	terminal->color_scheme = &DEFAULT_COLORS;
> diff --git a/clients/window.c b/clients/window.c
> index b9045f3..ac35285 100644
> --- a/clients/window.c
> +++ b/clients/window.c
> @@ -1164,7 +1164,9 @@ shm_surface_create(struct display *display, struct wl_surface *wl_surface,
>  	struct shm_surface *surface;
>  	DBG_OBJ(wl_surface, "\n");
>  
> -	surface = calloc(1, sizeof *surface);
> +	surface = xmalloc(sizeof *surface);
> +	memset(surface, 0, sizeof *surface);
> +
>  	if (!surface)
>  		return NULL;
>  
> @@ -1309,7 +1311,7 @@ create_cursors(struct display *display)
>  
>  	display->cursor_theme = wl_cursor_theme_load(theme, size, display->shm);
>  	display->cursors =
> -		malloc(ARRAY_LENGTH(cursors) * sizeof display->cursors[0]);
> +		xmalloc(ARRAY_LENGTH(cursors) * sizeof display->cursors[0]);
>  
>  	for (i = 0; i < ARRAY_LENGTH(cursors); i++) {
>  		cursor = NULL;
> @@ -1606,7 +1608,7 @@ widget_create(struct window *window, struct surface *surface, void *data)
>  {
>  	struct widget *widget;
>  
> -	widget = malloc(sizeof *widget);
> +	widget = xmalloc(sizeof *widget);
>  	memset(widget, 0, sizeof *widget);
>  	widget->window = window;
>  	widget->surface = surface;
> @@ -2388,7 +2390,7 @@ frame_button_create(struct frame *frame, void *data, enum frame_button_action ty
>  	struct frame_button *frame_button;
>  	const char *icon = data;
>  
> -	frame_button = malloc (sizeof *frame_button);
> +	frame_button = xmalloc(sizeof *frame_button);
>  	memset(frame_button, 0, sizeof *frame_button);
>  
>  	frame_button->icon = cairo_image_surface_create_from_png(icon);
> @@ -3229,7 +3231,7 @@ data_device_data_offer(void *data,
>  {
>  	struct data_offer *offer;
>  
> -	offer = malloc(sizeof *offer);
> +	offer = xmalloc(sizeof *offer);
>  
>  	wl_array_init(&offer->types);
>  	offer->refcount = 1;
> @@ -4138,7 +4140,7 @@ surface_enter(void *data,
>  	if (!output_found)
>  		return;
>  
> -	window_output = malloc (sizeof *window_output);
> +	window_output = xmalloc(sizeof *window_output);
>  	window_output->output = output_found;
>  
>  	wl_list_insert (&window->window_output_list, &window_output->link);
> @@ -4185,7 +4187,8 @@ surface_create(struct window *window)
>  	struct display *display = window->display;
>  	struct surface *surface;
>  
> -	surface = calloc(1, sizeof *surface);
> +	surface = xmalloc(sizeof *surface);
> +	memset(surface, 0, sizeof *surface);
>  	if (!surface)
>  		return NULL;
>  
> @@ -4773,7 +4776,7 @@ registry_handle_global(void *data, struct wl_registry *registry, uint32_t id,
>  	struct display *d = data;
>  	struct global *global;
>  
> -	global = malloc(sizeof *global);
> +	global = xmalloc(sizeof *global);
>  	global->name = id;
>  	global->interface = strdup(interface);
>  	global->version = version;
> -- 
> 1.8.1.2
> 
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel


More information about the wayland-devel mailing list