mirror of https://github.com/nodejs/node.git
string_bytes: add StringBytes::IsValidString()
Performs a quick, non-exhaustive check on the input string to see if it's compatible with the specified string encoding. Curently it only checks that hex strings have a length that is a multiple of two.pull/5010/head
parent
4881a6a9a3
commit
dce26ccea1
|
@ -257,6 +257,13 @@ size_t StringBytes::Write(char* buf,
|
|||
}
|
||||
|
||||
|
||||
bool StringBytes::IsValidString(Handle<String> string, enum encoding enc) {
|
||||
if (enc == HEX && string->Length() % 2 != 0) return false;
|
||||
// TODO(bnoordhuis) Add BASE64 check?
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// Quick and dirty size calculation
|
||||
// Will always be at least big enough, but may have some extra
|
||||
// UTF8 can be as much as 3x the size, Base64 can have 1-2 extra bytes
|
||||
|
|
|
@ -36,6 +36,11 @@ using v8::Value;
|
|||
|
||||
class StringBytes {
|
||||
public:
|
||||
// Does the string match the encoding? Quick but non-exhaustive.
|
||||
// Example: a HEX string must have a length that's a multiple of two.
|
||||
// FIXME(bnoordhuis) IsMaybeValidString()? Naming things is hard...
|
||||
static bool IsValidString(Handle<String> string, enum encoding enc);
|
||||
|
||||
// Fast, but can be 2 bytes oversized for Base64, and
|
||||
// as much as triple UTF-8 strings <= 65536 chars in length
|
||||
static size_t StorageSize(Handle<Value> val, enum encoding enc);
|
||||
|
|
Loading…
Reference in New Issue