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

Brian Lovin brian.j.lovin at intel.com
Wed Aug 7 15:34:59 PDT 2013


For the clients continue to use xmalloc() to simplify OOM-handling.

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



More information about the wayland-devel mailing list