Ticket #1537: ticket1537.patch

File ticket1537.patch, 2.4 KB (added by s.ochsenknecht@…, 13 years ago)

possible patch

  • libs/program_options/test/parsers_test.cpp

     
    117117                          "--plug3=10"};
    118118    vector<string> cmdline3 = sv(cmdline3_,
    119119                                 sizeof(cmdline3_)/sizeof(const char*));
     120                                 
    120121    vector<option> a3 =
    121122        command_line_parser(cmdline3).options(desc).run().options;
    122123                       
     
    202203    desc.add_options()
    203204        ("gv1", new untyped_value)
    204205        ("gv2", new untyped_value)
     206        ("empty_value", new untyped_value)
    205207        ("plug*", new untyped_value)
    206208        ("m1.v1", new untyped_value)
    207209        ("m1.v2", new untyped_value)
     
    210212
    211213    const char content1[] =
    212214    " gv1 = 0#asd\n"
     215    "empty_value = \n"
    213216    "plug3 = 7\n"
    214217    "b = true\n"
    215218    "[m1]\n"
     
    220223
    221224    stringstream ss(content1);
    222225    vector<option> a1 = parse_config_file(ss, desc).options;
    223     BOOST_REQUIRE(a1.size() == 5);
     226    BOOST_REQUIRE(a1.size() == 6);
    224227    check_value(a1[0], "gv1", "0");
    225     check_value(a1[1], "plug3", "7");
    226     check_value(a1[2], "b", "true");
    227     check_value(a1[3], "m1.v1", "1");
    228     check_value(a1[4], "m1.v2", "2");
     228    check_value(a1[1], "empty_value", "");
     229    check_value(a1[2], "plug3", "7");
     230    check_value(a1[3], "b", "true");
     231    check_value(a1[4], "m1.v1", "1");
     232    check_value(a1[5], "m1.v2", "2");
    229233
    230234}
    231235
  • libs/program_options/src/config_file.cpp

     
    105105                    bool registered = allowed_option(name);
    106106                    if (!registered && !m_allow_unregistered)
    107107                        boost::throw_exception(unknown_option(name));
    108                                        
    109                     if (value.empty())
    110                         boost::throw_exception(invalid_syntax(s, "no value given"));
    111                    
     108                                                   
    112109                    found = true;
    113110                    this->value().string_key = name;
    114111                    this->value().value.clear();