certi-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[certi-cvs] certi/libRTI RTI1516ambassador.cpp


From: certi-cvs
Subject: [certi-cvs] certi/libRTI RTI1516ambassador.cpp
Date: Fri, 18 Feb 2011 14:25:27 +0000

CVSROOT:        /sources/certi
Module name:    certi
Changes by:     Eric NOULARD <erk>      11/02/18 14:25:27

Modified files:
        libRTI         : RTI1516ambassador.cpp 

Log message:
        fix bug #32531 : Attribure and parameter values are not handled properly
        and simplify code when possible.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/certi/libRTI/RTI1516ambassador.cpp?cvsroot=certi&r1=1.3&r2=1.4

Patches:
Index: RTI1516ambassador.cpp
===================================================================
RCS file: /sources/certi/certi/libRTI/RTI1516ambassador.cpp,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- RTI1516ambassador.cpp       18 Jan 2011 13:26:22 -0000      1.3
+++ RTI1516ambassador.cpp       18 Feb 2011 14:25:27 -0000      1.4
@@ -37,28 +37,13 @@
 
                req.setParametersSize(PHVM.size());
                req.setValuesSize(PHVM.size());
-               std::vector<certi::ParameterValue_t*> parameterValueVector;
-               parameterValueVector.resize(PHVM.size());
                uint32_t i = 0;
                for ( rti1516::ParameterHandleValueMap::const_iterator it = 
PHVM.begin(); it != PHVM.end(); it++, ++i)
                {
                        
req.setParameters(ParameterHandleFriend::toCertiHandle(it->first),i);
-                       char *buf = (char*) calloc(it->second.size() + 1, 
sizeof(char));
-                       memcpy(buf, it->second.data(), it->second.size());
-                       certi::ParameterValue_t* paramValue = new 
certi::ParameterValue_t(buf);
-                       free(buf);
-                       parameterValueVector[i] = paramValue;
-                       req.setValues(*paramValue, i);  
+                       req.setValues(certi::ParameterValue_t( 
(char*)it->second.data(), it->second.size() ), i);
                }
-
-               try {
                        privateRefs->executeService(&req, &rep);
-               } catch (...) {
-                       struct Deletor<certi::ParameterValue_t> 
paramValueDeletor;
-                       //delete parameter values
-                       
std::for_each(parameterValueVector.begin(),parameterValueVector.end(),paramValueDeletor);
-                       throw;
-               }
        }
 
        template<typename T>
@@ -67,58 +52,26 @@
 
                req.setAttributesSize(AHVM.size());
                req.setValuesSize(AHVM.size());
-               struct Deletor<certi::AttributeValue_t> attrValueDeletor;
-               std::vector<certi::AttributeValue_t*> attributeValueVector;
-               attributeValueVector.resize(AHVM.size());
                uint32_t i = 0;
                for ( rti1516::AttributeHandleValueMap::const_iterator it = 
AHVM.begin(); it != AHVM.end(); it++, ++i)
                {
                        
req.setAttributes(AttributeHandleFriend::toCertiHandle(it->first),i);
-                       char *buf = (char*) calloc(it->second.size() + 1, 
sizeof(char));
-                       memcpy(buf, it->second.data(), it->second.size());
-                       certi::AttributeValue_t* attrValue = new 
certi::AttributeValue_t(buf);
-                       free(buf);
-                       attributeValueVector[i] = attrValue;
-                       req.setValues(*attrValue, i);  
+                       req.setValues(certi::AttributeValue_t( 
(char*)it->second.data(),it->second.size() ), i);
                }
-
-               try {
                        privateRefs->executeService(&req, &rep);
-               } catch (...) {
-                       //delete attribute values
-                       
std::for_each(attributeValueVector.begin(),attributeValueVector.end(),attrValueDeletor);
-                       throw;
-               }
-
-               //delete attribute values
-               
std::for_each(attributeValueVector.begin(),attributeValueVector.end(),attrValueDeletor);
        }
 
        template<typename T>
        void
        RTI1516ambassador::assignAHSAndExecuteService(const 
rti1516::AttributeHandleSet &AHS, T &req, T &rep) {
                req.setAttributesSize(AHS.size());
-               struct Deletor<certi::AttributeHandle> attrHandleDeletor;
-               std::vector<certi::AttributeHandle*> attributeHandleVector;
-               attributeHandleVector.resize(AHS.size());
                uint32_t i = 0;
                for ( rti1516::AttributeHandleSet::const_iterator it = 
AHS.begin(); it != AHS.end(); it++, ++i)
                {
                        certi::AttributeHandle certiHandle = 
AttributeHandleFriend::toCertiHandle(*it);
                        req.setAttributes(certiHandle,i);
-                       attributeHandleVector[i] = &certiHandle;
                }
-
-               try {
                        privateRefs->executeService(&req, &rep);
-               } catch (...) {
-                       //delete attribute handles
-                       
std::for_each(attributeHandleVector.begin(),attributeHandleVector.end(),attrHandleDeletor);
-                       throw;
-               }
-
-               //delete attribute handles
-               
std::for_each(attributeHandleVector.begin(),attributeHandleVector.end(),attrHandleDeletor);
        }
 
        std::string varLengthDataAsString(VariableLengthData varLengthData) {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]