static JSOBJ newString()

in src/ujdecode.c [172:199]


static JSOBJ newString(void* context, wchar_t *start, wchar_t *end)
{
	struct DecoderState *ds = context;
	size_t len;
	StringItem *si = (StringItem *) alloc(ds, sizeof(StringItem) + (end - start + 1) * sizeof(wchar_t));
	len = end - start;

	si->item.type = UJT_String;
	si->str.ptr = (wchar_t *) (si + 1);
	si->str.cchLen = len;

	if (len < 4)
	{
		wchar_t *dst = si->str.ptr;
		wchar_t *end = dst + len;

		while (dst < end)
		{
			*(dst++) = *(start++);
		}
	}
	else
	{
		memcpy (si->str.ptr, start, len * sizeof(wchar_t));
	}
	si->str.ptr[len] = '\0';
	return (JSOBJ) si;
}