diff --git a/jsonchecker/fail70.json b/jsonchecker/fail70.json new file mode 100644 index 000000000..e69de29bb diff --git a/jsonchecker/pass19.json b/jsonchecker/pass19.json new file mode 100644 index 000000000..d7d17fcbe --- /dev/null +++ b/jsonchecker/pass19.json @@ -0,0 +1 @@ +-1 \ No newline at end of file diff --git a/src/parsedjson.cpp b/src/parsedjson.cpp index d6e661c42..efbde503b 100644 --- a/src/parsedjson.cpp +++ b/src/parsedjson.cpp @@ -35,9 +35,11 @@ ParsedJson::ParsedJson(ParsedJson && p) WARN_UNUSED bool ParsedJson::allocateCapacity(size_t len, size_t maxdepth) { - if ((maxdepth == 0) || (len == 0)) { - std::cerr << "capacities must be non-zero " << std::endl; - return false; + if (maxdepth <= 0) { + maxdepth = 1; // don't let the user allocate nothing + } + if (len <= 0) { + len = 64; // allocating 0 bytes is wasteful. } if(len > SIMDJSON_MAXSIZE_BYTES) { return false; diff --git a/tools/json2json.cpp b/tools/json2json.cpp index ebe4183bc..88de7a73d 100644 --- a/tools/json2json.cpp +++ b/tools/json2json.cpp @@ -86,8 +86,8 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; } int res = simdjson::json_parse(p, pj); // do the parsing, return false on error - if (res) { - std::cerr << " Parsing failed. " << std::endl; + if (res != simdjson::SUCCESS) { + std::cerr << " Parsing failed. Error is '" << simdjson::errorMsg(res) << "'." << std::endl; return EXIT_FAILURE; } if (apidump) { diff --git a/tools/jsonstats.cpp b/tools/jsonstats.cpp index ed826891f..973c30ce0 100644 --- a/tools/jsonstats.cpp +++ b/tools/jsonstats.cpp @@ -46,6 +46,7 @@ stat_t simdjson_computestats(const simdjson::padded_string &p) { simdjson::ParsedJson pj = simdjson::build_parsed_json(p); answer.valid = pj.isValid(); if (!answer.valid) { + std::cerr << pj.getErrorMsg() << std::endl; return answer; } answer.backslash_count = count_backslash(reinterpret_cast(p.data()), p.size());