}
return p;
+}\r
+\r
+Descriptor* DescriptorParser::clone( const Descriptor *des)\r
+{\r
+ int16_t ret;\r
+ Descriptor *p = NULL;\r
+\r
+ p = create( des->descriptor_tag, des->descriptor_length);\r
+ if( !p) {\r
+ return p;\r
+ }\r
+\r
+ ret = p->parse( des->descriptor.begin(), des->descriptor.size());\r
+ if( ret < 0) {\r
+ fprintf( stderr, "Descriptor clone error tag = 0x%02X", des->descriptor_tag);\r
+ delete p;\r
+ p = NULL;\r
+ }\r
+ else if( ret != des->descriptor_length) {\r
+ fprintf( stderr, "clone des overflow tag = 0x%02X, len = %d, ret = %d\n", des->descriptor_tag, des->descriptor_length, ret);\r
+ delete p;\r
+ p = NULL;\r
+ }\r
+ return p;\r
}
Descriptor* DescriptorParser::create( const uint8_t tag, const uint8_t length)