Internal Change
PiperOrigin-RevId: 553652444
This commit is contained in:
		
							parent
							
								
									360959e325
								
							
						
					
					
						commit
						11508f2291
					
				|  | @ -501,7 +501,6 @@ cc_library( | ||||||
|         ":calculator_graph_template_cc_proto", |         ":calculator_graph_template_cc_proto", | ||||||
|         ":proto_util_lite", |         ":proto_util_lite", | ||||||
|         "//mediapipe/framework:calculator_cc_proto", |         "//mediapipe/framework:calculator_cc_proto", | ||||||
|         "//mediapipe/framework/port:logging", |  | ||||||
|         "//mediapipe/framework/port:numbers", |         "//mediapipe/framework/port:numbers", | ||||||
|         "//mediapipe/framework/port:ret_check", |         "//mediapipe/framework/port:ret_check", | ||||||
|         "//mediapipe/framework/port:status", |         "//mediapipe/framework/port:status", | ||||||
|  |  | ||||||
|  | @ -15,20 +15,14 @@ | ||||||
| #include "mediapipe/framework/tool/template_expander.h" | #include "mediapipe/framework/tool/template_expander.h" | ||||||
| 
 | 
 | ||||||
| #include <algorithm> | #include <algorithm> | ||||||
| #include <map> |  | ||||||
| #include <memory> | #include <memory> | ||||||
| #include <string> | #include <string> | ||||||
| #include <utility> |  | ||||||
| #include <vector> | #include <vector> | ||||||
| 
 | 
 | ||||||
| #include "absl/strings/ascii.h" | #include "absl/strings/ascii.h" | ||||||
| #include "absl/strings/match.h" | #include "absl/strings/match.h" | ||||||
| #include "absl/strings/numbers.h" | #include "absl/strings/numbers.h" | ||||||
| #include "absl/strings/str_join.h" |  | ||||||
| #include "absl/strings/str_split.h" |  | ||||||
| #include "mediapipe/framework/calculator.pb.h" | #include "mediapipe/framework/calculator.pb.h" | ||||||
| #include "mediapipe/framework/port/canonical_errors.h" |  | ||||||
| #include "mediapipe/framework/port/logging.h" |  | ||||||
| #include "mediapipe/framework/port/numbers.h" | #include "mediapipe/framework/port/numbers.h" | ||||||
| #include "mediapipe/framework/port/ret_check.h" | #include "mediapipe/framework/port/ret_check.h" | ||||||
| #include "mediapipe/framework/port/status.h" | #include "mediapipe/framework/port/status.h" | ||||||
|  | @ -183,8 +177,7 @@ FieldType GetFieldType(const TemplateExpression& rule) { | ||||||
| int FieldCount(const FieldValue& base, ProtoPath field_path, | int FieldCount(const FieldValue& base, ProtoPath field_path, | ||||||
|                FieldType field_type) { |                FieldType field_type) { | ||||||
|   int result = 0; |   int result = 0; | ||||||
|   CHECK( |   CHECK_OK(ProtoUtilLite::GetFieldCount(base, field_path, field_type, &result)); | ||||||
|       ProtoUtilLite::GetFieldCount(base, field_path, field_type, &result).ok()); |  | ||||||
|   return result; |   return result; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -471,7 +471,7 @@ class TemplateParser::Parser::ParserImpl { | ||||||
|                     "\" stored in google.protobuf.Any."); |                     "\" stored in google.protobuf.Any."); | ||||||
|         return false; |         return false; | ||||||
|       } |       } | ||||||
|       DO(ConsumeAnyValue(value_descriptor, &serialized_value)); |       DO(ConsumeAnyValue(any_value_field, value_descriptor, &serialized_value)); | ||||||
|       if (singular_overwrite_policy_ == FORBID_SINGULAR_OVERWRITES) { |       if (singular_overwrite_policy_ == FORBID_SINGULAR_OVERWRITES) { | ||||||
|         // Fail if any_type_url_field has already been specified.
 |         // Fail if any_type_url_field has already been specified.
 | ||||||
|         if ((!any_type_url_field->is_repeated() && |         if ((!any_type_url_field->is_repeated() && | ||||||
|  | @ -709,7 +709,7 @@ class TemplateParser::Parser::ParserImpl { | ||||||
|     // If the parse information tree is not NULL, create a nested one
 |     // If the parse information tree is not NULL, create a nested one
 | ||||||
|     // for the nested message.
 |     // for the nested message.
 | ||||||
|     ParseInfoTree* parent = parse_info_tree_; |     ParseInfoTree* parent = parse_info_tree_; | ||||||
|     if (parent != NULL) { |     if (parent) { | ||||||
|       parse_info_tree_ = parent->CreateNested(field); |       parse_info_tree_ = parent->CreateNested(field); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -1191,8 +1191,20 @@ class TemplateParser::Parser::ParserImpl { | ||||||
| 
 | 
 | ||||||
|   // A helper function for reconstructing Any::value. Consumes a text of
 |   // A helper function for reconstructing Any::value. Consumes a text of
 | ||||||
|   // full_type_name, then serializes it into serialized_value.
 |   // full_type_name, then serializes it into serialized_value.
 | ||||||
|   bool ConsumeAnyValue(const Descriptor* value_descriptor, |   bool ConsumeAnyValue(const FieldDescriptor* field, | ||||||
|  |                        const Descriptor* value_descriptor, | ||||||
|                        std::string* serialized_value) { |                        std::string* serialized_value) { | ||||||
|  |     if (--recursion_limit_ < 0) { | ||||||
|  |       ReportError("Message is too deep"); | ||||||
|  |       return false; | ||||||
|  |     } | ||||||
|  |     // If the parse information tree is not NULL, create a nested one
 | ||||||
|  |     // for the nested message.
 | ||||||
|  |     ParseInfoTree* parent = parse_info_tree_; | ||||||
|  |     if (parent) { | ||||||
|  |       parse_info_tree_ = parent->CreateNested(field); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     DynamicMessageFactory factory; |     DynamicMessageFactory factory; | ||||||
|     const Message* value_prototype = factory.GetPrototype(value_descriptor); |     const Message* value_prototype = factory.GetPrototype(value_descriptor); | ||||||
|     if (value_prototype == NULL) { |     if (value_prototype == NULL) { | ||||||
|  | @ -1214,6 +1226,11 @@ class TemplateParser::Parser::ParserImpl { | ||||||
|       } |       } | ||||||
|       value->AppendToString(serialized_value); |       value->AppendToString(serialized_value); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     ++recursion_limit_; | ||||||
|  | 
 | ||||||
|  |     // Reset the parse information tree.
 | ||||||
|  |     parse_info_tree_ = parent; | ||||||
|     return true; |     return true; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user