/* caller is responsible for ensuring this */ DUK_ASSERT(blen <= DUK_HSTRING_MAX_BYTELEN); res = duk__do_lookup(heap, str, blen, &strhash); if (res) { return res; } res = duk__do_intern(heap, str, blen, strhash); return res; /* may be NULL */ } DUK_INTERNAL duk_hstring *duk_heap_string_intern_checked(duk_hthread *thr, const duk_uint8_t *str, duk_uint32_t blen) { duk_hstring *res = duk_heap_string_intern(thr->heap, str, blen); if (!res) { DUK_ERROR(thr, DUK_ERR_ALLOC_ERROR, "failed to intern string"); } return res; } #if 0 /*unused*/ DUK_INTERNAL duk_hstring *duk_heap_string_lookup_u32(duk_heap *heap, duk_uint32_t val) { char buf[DUK_STRTAB_U32_MAX_STRLEN+1]; DUK_SNPRINTF(buf, sizeof(buf), "%lu", (unsigned long) val); buf[sizeof(buf) - 1] = (char) 0; DUK_ASSERT(DUK_STRLEN(buf) <= DUK_UINT32_MAX); /* formatted result limited */ return duk_heap_string_lookup(heap, (const duk_uint8_t *) buf, (duk_uint32_t) DUK_STRLEN(buf)); }
duk_hstring *duk_heap_string_lookup_u32(duk_heap *heap, duk_uint32_t val) { char buf[DUK_STRTAB_U32_MAX_STRLEN+1]; DUK_SNPRINTF(buf, sizeof(buf), "%u", (unsigned int) val); buf[sizeof(buf) - 1] = (char) 0; return duk_heap_string_lookup(heap, (duk_uint8_t *) buf, DUK_STRLEN(buf)); }