diff --git a/sway/ipc-server.c b/sway/ipc-server.c
index 5bc64b1f..b6268404 100644
--- a/sway/ipc-server.c
+++ b/sway/ipc-server.c
@@ -617,8 +617,8 @@ void ipc_client_handle_command(struct ipc_client *client) {
 		}
 
 		size_t size;
-		bool found = false;
 		const char **types = wlc_get_selection_types(&size);
+		const char *type = NULL;
 		if (types == NULL || size == 0) {
 			const char *error = "{ \"success\": false, \"error\": "
 				"\"Empty clipboard\" }";
@@ -627,48 +627,50 @@ void ipc_client_handle_command(struct ipc_client *client) {
 		}
 
 		for (size_t i = 0; i < size; ++i) {
-			if (strcmp(types[i], "text/plain;charset=utf-8") != 0
-					&& strcmp(types[i], "text/plain") != 0) {
-				continue;
+			if (strcmp(types[i], "text/plain;charset=utf-8") == 0
+					|| strcmp(types[i], "text/plain") == 0) {
+				type = types[i];
+				break;
 			}
+		}
 
+		if (type) {
 			struct get_clipboard_request *req = malloc(sizeof(*req));
 			if (!req) {
 				sway_log(L_ERROR, "Unable to allocate get_clipboard_request");
-				goto exit_cleanup;
+				goto clipboard_error;
 			}
 
 			int pipes[2];
 			if (pipe(pipes) == -1) {
 				sway_log_errno(L_ERROR, "pipe call failed");
 				free(req);
-				break;
+				goto clipboard_error;
 			}
 
 			fcntl(pipes[0], F_SETFD, FD_CLOEXEC | O_NONBLOCK);
 			fcntl(pipes[1], F_SETFD, FD_CLOEXEC | O_NONBLOCK);
-			if (!wlc_get_selection_data(types[i], pipes[1])) {
+			if (!wlc_get_selection_data(type, pipes[1])) {
 				close(pipes[0]);
 				close(pipes[1]);
 				free(req);
 				sway_log(L_ERROR, "wlc_get_selection_data failed");
-				break;
+				goto clipboard_error;
 			}
 
 			req->client = client;
 			req->event_source = wlc_event_loop_add_fd(pipes[0],
 				WLC_EVENT_READABLE | WLC_EVENT_ERROR | WLC_EVENT_HANGUP,
 				&ipc_selection_data_cb, req);
-			found = true;
-			break;
+			free(types);
+			goto exit_cleanup;
 		}
 
-		if (!found) {
-			sway_log(L_INFO, "Clipboard has to text data");
-			const char *error = "{ \"success\": false, \"error\": "
-				"\"Could not receive text data from clipboard\" }";
-			ipc_send_reply(client, error, (uint32_t)strlen(error));
-		}
+clipboard_error:
+		sway_log(L_INFO, "Clipboard has to text data");
+		const char *error = "{ \"success\": false, \"error\": "
+			"\"Could not receive text data from clipboard\" }";
+		ipc_send_reply(client, error, (uint32_t)strlen(error));
 
 		free(types);
 		goto exit_cleanup;