json-c: ошибка сегментации в json_tokener_parse - PullRequest
0 голосов
/ 24 мая 2018

Я использую json-c для анализа файлов json в моем проекте.Я попытался создать json_tokener_parse, но это привело к ошибке сегмента.Может ли кто-нибудь проверить и сказать мне причину Segfault.

#include <sys/mman.h> 
#include <sys/stat.h>
#include <fcntl.h> // O_RDONLY
#include<stdlib.h>
#include<stdio.h>
#include<unistd.h>
#include<json-c/json.h>

int main() {
    int oflag = O_RDONLY;
    const char *path = "file.json";
    const int fd = open(path, oflag);

    // use stat to find the file size
    struct stat stat;
    int ret = fstat(fd, &stat);

    int mflags = MAP_SHARED; // information about handling the mapped data
    int mprot = PROT_READ|PROT_WRITE; // access permissions to the data being mapped 
    size_t size = stat.st_size;
    void *addr = mmap(NULL, size, mprot, mflags, fd, 0);
    const char *file = (char *)addr;

    json_object * jobj = json_tokener_parse(addr);     
    //json_parse(jobj);
}

1 Ответ

0 голосов
/ 25 мая 2018

json_tokener_parse() принимает строку с нулевым символом в конце.Текстовый файл не заканчивается нулем.Вам нужно будет использовать json_tokener_parse_ex() и указать длину.

...