_cairo_path_fini(path);
_cairo_path_init_copy (cairo_path_t *path, cairo_path_t *other){    cairo_path_op_buf_t *op, *other_op;    cairo_path_arg_buf_t *arg, *other_arg;    _cairo_path_init (path);    path->current_point = other->current_point;    path->has_current_point = other->has_current_point;    path->last_move_point = other->last_move_point;    for (other_op = other->op_head; other_op; other_op = other_op->next) {	op = _cairo_path_op_buf_create ();	if (op == NULL) {	    return CAIRO_STATUS_NO_MEMORY;	}	*op = *other_op;	_cairo_path_add_op_buf (path, op);    }    for (other_arg = other->arg_head; other_arg; other_arg = other_arg->next) {	arg = _cairo_path_arg_buf_create ();	if (arg == NULL) {	    return CAIRO_STATUS_NO_MEMORY;	}	*arg = *other_arg;	_cairo_path_add_arg_buf (path, arg);    }    return CAIRO_STATUS_SUCCESS;}