/* These routines are like the above routines, except that they handle null-terminated strings. They find the length of that string (and throw an exception if the tvbuff ends before we find the null), and also return through a pointer the length of the string, in bytes, including the terminating null (the terminating null being 2 bytes for UCS-2 and UTF-16, 4 bytes for UCS-4, and 1 byte for other encodings).  */
static guint8* tvb_get_ascii_stringz(wmem_allocator_t *scope, tvbuff_t *tvb, gint offset, gint *lengthp)
/* These routines are like the above routines, except that they handle null-terminated strings. They find the length of that string (and throw an exception if the tvbuff ends before we find the null), and also return through a pointer the length of the string, in bytes, including the terminating null (the terminating null being 2 bytes for UCS-2 and UTF-16, 4 bytes for UCS-4, and 1 byte for other encodings).  */
static guint8* tvb_get_ascii_stringz(wmem_allocator_t *scope, tvbuff_t *tvb, gint offset, gint *lengthp)
{
	guint	       size;
	const guint8  *ptr;
	size = tvb_strsize(tvb, offset);
	ptr  = ensure_contiguous(tvb, offset, size);
	if (lengthp)
		*lengthp = size;
	return get_ascii_string(scope, ptr, size);
}