Rapid JSON Pointer Set / Create / GetWithDefault вызывает дамп ядра C ++ 11 - PullRequest
1 голос
/ 28 мая 2020

Я столкнулся с этой ошибкой

Необработанная ошибка: исключение выравнивания при использовании указателей RapidJSON.

Я пробовал разные вещи с минимальным успехом.

rapidjson::Document jsonDoc;
rapidjson::Pointer("/levelOne/levelTwo/value").GetWithDefault(jsonDoc, "value1");
rapidjson::Document jsonDoc;
if (rapidjson::Pointer("/levelOne/levelTwo/value").Get(jsonDoc) == nullptr) {
    rapidjson::Pointer("/levelOne/levelTwo/value").GetWithDefault(jsonDoc, "value1");
}
rapidjson::Document jsonDoc;
if (rapidjson::Pointer("/levelOne/levelTwo/value").Get(jsonDoc) == nullptr) {
    rapidjson::Pointer("/levelOne/levelTwo/value").Create(jsonDoc);
    rapidjson::Pointer("/levelOne/levelTwo/value").Set(jsonDoc, "value1");
}
rapidjson::Document jsonDoc;
if (rapidjson::Pointer("/levelOne/levelTwo/value").Get(jsonDoc) == nullptr) {
    rapidjson::Pointer("/levelOne/levelTwo/value").Set(jsonDoc, "value1");
}

Все вышеперечисленное приводит к ошибке исключения выравнивания (Примечание: возникла ошибка после вызовов Create, Set или GetWithDefault. Get звонки не вызвали неисправности.). Минимальный достигнутый прогресс был:

rapidjson::Document jsonDoc;
if (rapidjson::Pointer("/levelOne/levelTwo/value").Get(jsonDoc) == nullptr) {
    rapidjson::Pointer("/levelOne").Create(jsonDoc);
    rapidjson::Pointer("/levelOne/levelTwo").Create(jsonDoc);
    rapidjson::Pointer("/levelOne/levelTwo/value").Create(jsonDoc);
    rapidjson::Pointer("/levelOne/levelTwo/value").Set(jsonDoc, "value1");
}

Вышеупомянутое успешно прошло через начальное создание (rapidjson::Pointer("/levelOne").Create(jsonDoc)) перед тем, как столкнуться с ошибкой.

Любые отзывы о том, где я ошибаюсь, используя rapidjson::Pointer?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...