]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | #include "duk_internal.h" |
2 | ||
3 | #if defined(DUK_USE_BUFFEROBJECT_SUPPORT) | |
4 | DUK_INTERNAL duk_uint_t duk_hbufferobject_clamp_bytelength(duk_hbufferobject *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 */ |