1 #include "duk_internal.h"
2 
3 #if defined(DUK_USE_BUFFEROBJECT_SUPPORT)
duk_hbufobj_clamp_bytelength(duk_hbufobj * h_bufobj,duk_uint_t len)4 DUK_INTERNAL duk_uint_t duk_hbufobj_clamp_bytelength(duk_hbufobj *h_bufobj, duk_uint_t len) {
5 	duk_uint_t buf_size;
6 	duk_uint_t buf_avail;
7 
8 	DUK_ASSERT(h_bufobj != NULL);
9 	DUK_ASSERT(h_bufobj->buf != NULL);
10 
11 	buf_size = (duk_uint_t) DUK_HBUFFER_GET_SIZE(h_bufobj->buf);
12 	if (h_bufobj->offset > buf_size) {
13 		/* Slice starting point is beyond current length. */
14 		return 0;
15 	}
16 	buf_avail = buf_size - h_bufobj->offset;
17 
18 	return buf_avail >= len ? len : buf_avail;
19 }
20 #endif  /* DUK_USE_BUFFEROBJECT_SUPPORT */
21