Ignore:
Timestamp:
May 29, 2008, 3:24:26 AM (14 years ago)
Author:
charles
Message:

#972: merge upstream version of Jean Gressmann's JSON_parser

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/JSON_parser.c

    r5869 r5969  
    3131   
    3232    For the added features the license above applies also.
     33   
     34    Changelog:
     35   
     36        2008/05/28
     37            - Made JSON_value structure ansi C compliant. This bug was report by
     38              trisk@acm.jhu.edu
     39       
     40        2008/05/20
     41            - Fixed bug reported by Charles.Kerr@noaa.gov where the switching
     42              from static to dynamic parse buffer did not copy the static parse
     43              buffer's content.
    3344*/
    3445
     
    5566#define __   -1     /* the universal error code */
    5667
    57 /* values chosen so that the object approx. fits into a page (4K) */
     68/* values chosen so that the object size is approx equal to one page (4K) */
    5869#ifndef JSON_PARSER_STACK_SIZE
    5970#   define JSON_PARSER_STACK_SIZE 128
     
    453464                    arg = &value;
    454465                    if (jc->handle_floats_manually) {
    455                         value.string_value = jc->parse_buffer;
    456                         value.string_length = jc->parse_buffer_count;
     466                        value.vu.str.value = jc->parse_buffer;
     467                        value.vu.str.length = jc->parse_buffer_count;
    457468                    } else {
    458                         result = sscanf(jc->parse_buffer, "%Lf", &value.float_value);
     469                        result = sscanf(jc->parse_buffer, "%Lf", &value.vu.float_value);
    459470                    }
    460471                    break;
    461472                case JSON_T_INTEGER:
    462473                    arg = &value;
    463                     result = sscanf(jc->parse_buffer, JSON_PARSER_INTEGER_SSCANF_TOKEN, &value.integer_value);
     474                    result = sscanf(jc->parse_buffer, JSON_PARSER_INTEGER_SSCANF_TOKEN, &value.vu.integer_value);
    464475                    break;
    465476                case JSON_T_STRING:
    466477                    arg = &value;
    467                     value.string_value = jc->parse_buffer;
    468                     value.string_length = jc->parse_buffer_count;
     478                    value.vu.str.value = jc->parse_buffer;
     479                    value.vu.str.length = jc->parse_buffer_count;
    469480                    break;
    470481            }
     
    830841                if (jc->callback) {
    831842                    JSON_value value;
    832                     value.string_value = jc->parse_buffer;
    833                     value.string_length = jc->parse_buffer_count;
     843                    value.vu.str.value = jc->parse_buffer;
     844                    value.vu.str.length = jc->parse_buffer_count;
    834845                    if (!(*jc->callback)(jc->ctx, JSON_T_KEY, &value)) {
    835846                        return false;
Note: See TracChangeset for help on using the changeset viewer.