Ticket #4786: boost_1_44_0.property_tree.patch
File boost_1_44_0.property_tree.patch, 3.2 KB (added by , 12 years ago) |
---|
-
boost/property_tree/detail/info_parser_read.hpp
old new 288 288 else // Key text found 289 289 { 290 290 std::basic_string<Ch> key = read_key(text); 291 last = &stack.top()->push_back(291 last = (Ptree*)&stack.top()->push_back( 292 292 std::make_pair(key, Ptree()))->second; 293 293 state = s_data; 294 294 } … … 322 322 { 323 323 bool need_more_lines; 324 324 std::basic_string<Ch> data = read_data(text, &need_more_lines); 325 if (need_more_lines) 326 { 325 327 last->data() = data; 326 state = need_more_lines ? s_data_cont : s_key; 328 state = s_data_cont; 329 } 330 else 331 { 332 typename translator_between< 333 typename Ptree::data_type, 334 std::basic_string<Ch> >::type tr; 335 last->data() = tr.put_value(data); 336 state = s_key; 337 } 327 338 } 328 339 329 340 … … 339 350 if (*text == Ch('\"')) // Continuation must start with " 340 351 { 341 352 bool need_more_lines; 342 std::basic_string<Ch> data = read_string(text, &need_more_lines); 343 last->put_value(last->template get_value<std::basic_string<Ch> >() + data); 344 state = need_more_lines ? s_data_cont : s_key; 353 std::basic_string<Ch> data = 354 last->template get_value<std::basic_string<Ch> >() + 355 read_string(text, &need_more_lines); 356 357 if (need_more_lines) 358 { 359 last->data() = data; 360 state = s_data_cont; 361 } 362 else 363 { 364 typename translator_between< 365 typename Ptree::data_type, 366 std::basic_string<Ch> >::type tr; 367 last->data() = tr.put_value(data); 368 state = s_key; 369 } 345 370 } 346 371 else 347 372 BOOST_PROPERTY_TREE_THROW(info_parser_error("expected \" after \\ in previous line", "", 0));