TRIO_PUBLIC_STRING int trio_xstring_append TRIO_ARGS2((self, other), trio_string_t* self,
                                                      TRIO_CONST char* other)
{
	size_t length;

	assert(self);
	assert(other);

	length = self->length + trio_length(other);
	if (!internal_string_grow_to(self, length))
		goto error;
	trio_copy(&self->content[self->length], other);
	self->length = length;
	return TRUE;

error:
	return FALSE;
}
TRIO_PUBLIC_STRING int trio_xstring_append TRIO_ARGS2((self, other), trio_string_t* self,
                                                      TRIO_CONST char* other)
{
	size_t length;

	assert(self);
	assert(other);

	length = self->length + trio_length(other);
	if (!internal_string_grow_to(self, length))
		goto error;
	trio_copy(&self->content[self->length], other);
	self->length = length;
	return TRUE;

error:
	return FALSE;
}