forked from soutade/libgourou
Fix a nasty bug : fulfill reply data must be copied, not just referenced
This commit is contained in:
parent
8413b844db
commit
fd8ce841eb
|
@ -34,6 +34,12 @@ namespace gourou
|
||||||
class FulfillmentItem
|
class FulfillmentItem
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
/**
|
||||||
|
* @brief Main constructor. Not to be called by user
|
||||||
|
*
|
||||||
|
* @param doc Fulfill reply
|
||||||
|
* @param user User pointer
|
||||||
|
*/
|
||||||
FulfillmentItem(pugi::xml_document& doc, User* user);
|
FulfillmentItem(pugi::xml_document& doc, User* user);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -59,6 +65,7 @@ namespace gourou
|
||||||
std::string getResource();
|
std::string getResource();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
pugi::xml_document fulfillDoc;
|
||||||
pugi::xml_node metadatas;
|
pugi::xml_node metadatas;
|
||||||
pugi::xml_document rights;
|
pugi::xml_document rights;
|
||||||
std::string downloadURL;
|
std::string downloadURL;
|
||||||
|
|
|
@ -24,9 +24,11 @@
|
||||||
namespace gourou
|
namespace gourou
|
||||||
{
|
{
|
||||||
FulfillmentItem::FulfillmentItem(pugi::xml_document& doc, User* user)
|
FulfillmentItem::FulfillmentItem(pugi::xml_document& doc, User* user)
|
||||||
|
: fulfillDoc()
|
||||||
{
|
{
|
||||||
metadatas = doc.select_node("//metadata").node();
|
fulfillDoc.reset(doc); /* We must keep a copy */
|
||||||
|
metadatas = fulfillDoc.select_node("//metadata").node();
|
||||||
|
|
||||||
if (!metadatas)
|
if (!metadatas)
|
||||||
EXCEPTION(FFI_INVALID_FULFILLMENT_DATA, "No metadata tag in document");
|
EXCEPTION(FFI_INVALID_FULFILLMENT_DATA, "No metadata tag in document");
|
||||||
|
|
||||||
|
@ -49,7 +51,7 @@ namespace gourou
|
||||||
|
|
||||||
buildRights(licenseToken, user);
|
buildRights(licenseToken, user);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FulfillmentItem::buildRights(const pugi::xml_node& licenseToken, User* user)
|
void FulfillmentItem::buildRights(const pugi::xml_node& licenseToken, User* user)
|
||||||
{
|
{
|
||||||
pugi::xml_node decl = rights.append_child(pugi::node_declaration);
|
pugi::xml_node decl = rights.append_child(pugi::node_declaration);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user