generate c8arr in fromUTF8
This commit is contained in:
parent
93f362c4f2
commit
e8fecf64fa
@ -29,14 +29,20 @@ B fromUTF8(char* s, i64 len) {
|
|||||||
}
|
}
|
||||||
i8 l = utf8lenb((u8)s[j]);
|
i8 l = utf8lenb((u8)s[j]);
|
||||||
if (l==-1) thrM("Invalid UTF-8");
|
if (l==-1) thrM("Invalid UTF-8");
|
||||||
|
// TODO validate unicode or something
|
||||||
sz++;
|
sz++;
|
||||||
j+= l;
|
j+= l;
|
||||||
}
|
}
|
||||||
u32* rp; B r = m_c32arrv(&rp, sz);
|
if (sz==len) {
|
||||||
u64 p = 0;
|
u8* rp; B r = m_c8arrv(&rp, sz);
|
||||||
// TODO verify
|
for (i64 i = 0; i < len; i++) rp[i] = s[i];
|
||||||
for (i64 i = 0; i < len; i+= utf8lenb((u8)s[i])) rp[p++] = utf8_p((u8*)s+i); // may read after end, eh
|
return r;
|
||||||
return r;
|
} else {
|
||||||
|
u32* rp; B r = m_c32arrv(&rp, sz);
|
||||||
|
u64 p = 0;
|
||||||
|
for (i64 i = 0; i < len; i+= utf8lenb((u8)s[i])) rp[p++] = utf8_p((u8*)s+i); // may read after end, eh
|
||||||
|
return r;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
B fromUTF8l(char* s) {
|
B fromUTF8l(char* s) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user