@@ -1040,7 +1040,7 @@ std::unique_ptr<web::json::details::_Value> JSON_Parser<CharType>::_ParseArray(
10401040 case JSON_Parser<CharType>::Token::TKN_CloseBracket:
10411041 GetNextToken (tkn);
10421042 if (tkn.m_error ) return utility::details::make_unique<web::json::details::_Null>();
1043- return result;
1043+ return std::unique_ptr<web::json::details::_Value>( result. release ()) ;
10441044 default :
10451045 SetErrorCode (tkn, json_error::malformed_array_literal);
10461046 return utility::details::make_unique<web::json::details::_Null>();
@@ -1058,6 +1058,7 @@ template<typename CharType>
10581058std::unique_ptr<web::json::details::_Value> JSON_Parser<CharType>::_ParseValue(
10591059 typename JSON_Parser<CharType>::Token& tkn)
10601060{
1061+ typedef std::unique_ptr<web::json::details::_Value> Vptr;
10611062 switch (tkn.kind )
10621063 {
10631064 case JSON_Parser<CharType>::Token::TKN_OpenBrace:
@@ -1070,15 +1071,15 @@ std::unique_ptr<web::json::details::_Value> JSON_Parser<CharType>::_ParseValue(
10701071 }
10711072 case JSON_Parser<CharType>::Token::TKN_StringLiteral:
10721073 {
1073- auto value = utility::details::make_unique<web::json::details::_String>(std::move (tkn.string_val ),
1074+ Vptr value = utility::details::make_unique<web::json::details::_String>(std::move (tkn.string_val ),
10741075 tkn.has_unescape_symbol );
10751076 GetNextToken (tkn);
10761077 if (tkn.m_error ) return utility::details::make_unique<web::json::details::_Null>();
10771078 return value;
10781079 }
10791080 case JSON_Parser<CharType>::Token::TKN_IntegerLiteral:
10801081 {
1081- std::unique_ptr<web::json::details::_Number> value;
1082+ Vptr value;
10821083 if (tkn.signed_number )
10831084 value = utility::details::make_unique<web::json::details::_Number>(tkn.int64_val );
10841085 else
@@ -1090,14 +1091,14 @@ std::unique_ptr<web::json::details::_Value> JSON_Parser<CharType>::_ParseValue(
10901091 }
10911092 case JSON_Parser<CharType>::Token::TKN_NumberLiteral:
10921093 {
1093- auto value = utility::details::make_unique<web::json::details::_Number>(tkn.double_val );
1094+ Vptr value = utility::details::make_unique<web::json::details::_Number>(tkn.double_val );
10941095 GetNextToken (tkn);
10951096 if (tkn.m_error ) return utility::details::make_unique<web::json::details::_Null>();
10961097 return value;
10971098 }
10981099 case JSON_Parser<CharType>::Token::TKN_BooleanLiteral:
10991100 {
1100- auto value = utility::details::make_unique<web::json::details::_Boolean>(tkn.boolean_val );
1101+ Vptr value = utility::details::make_unique<web::json::details::_Boolean>(tkn.boolean_val );
11011102 GetNextToken (tkn);
11021103 if (tkn.m_error ) return utility::details::make_unique<web::json::details::_Null>();
11031104 return value;
0 commit comments