f2acaeb json: cope with older yajl semantics

2 files Authored by ericb 8 years ago, Committed by mprivozn 8 years ago,
    json: cope with older yajl semantics
    
    Commit ceb496e5 fails on RHEL 6, with yajl 1.0.7, because that
    version of yajl returns yajl_status_insufficient_data when the
    parser is waiting for the rest of a token (this enum value was
    dropped in yajl 2, so we have to wrap it).  It also exposes a
    problem where older yajl silently ignores trailing garbage after
    a successful parse, so this patch works around that by changing
    the testsuite.  Another more invasive patch can add tighter
    semantics to json parsing, but this is sufficient for a minimal
    clean backport.
    
    While touching this, fix up our error message cleanup. Yajl
    documents that error messages produced by yajl_get_error()
    MUST be cleaned with yajl_free_error(); this is certainly
    true if we were to pass non-NULL allocator callbacks during
    yajl_alloc(), but probably harmless in our usage of passing
    NULL.  But better safe than sorry.
    
    * src/util/virjson.c (virJSONValueFromString): Allow different
    error code.  Use canonical cleanup of error message.
    (VIR_YAJL_STATUS_OK): New helper macro.
    * tests/jsontest.c (mymain): Wrap text to avoid difference in
    trailing garbage handling
    
    Signed-off-by: Eric Blake <eblake@redhat.com>
    
        
file modified
+8 -4
file modified
+1 -1